Technote 1154

Debugging Java Code With MacsBug


ñ⁄éü

MacsBug äTê‡

ÅumrjÅvdcmd

äÓñ{ÉRÉ}ÉìÉh

ÉfÉoÉbÉOÉrÉãÉhÇ≈óòópâ¬î\Ç»ÉRÉ}ÉìÉh

ÉIÉuÉWÉFÉNÉgÇÃåüç∏

ÉXÉ^ÉbÉNÉNÉçÅ[ÉãÇΔÉXÉåÉbÉhï\é¶ÇÃâéfl

ÉRÉìÉeÉLÉXÉgÇÃêÿÇËë÷Ƕ

éQçlï∂å£

MacsBug ÇÕ Mac OS ÇÃí·ÉåÉxÉãÉfÉoÉbÉKÇ≈Ç∑ÅBJava ǻǫÇÃîÒèÌÇ…çÇêÖèÄÇ»åæåÍÇÃÉfÉoÉbÉOÇ…ÇÕñÇ…óßÇΩǻǢÇΔévÇÌÇÍÇÈǩLJǵÇÍÇ‹ÇπÇÒÅBé¿ÇÕǪÇÃîΩëŒÇ»ÇÃÇ≈Ç∑ÅBMRJ Çà MacsBug ëŒâûÉvÉâÉOÉCÉìÅudcmdÅvÇÉCÉìÉXÉgÅ[ÉãÇ∑ÇÈÇΔÅAÉfÉbÉhÉçÉbÉNÇ©ÇÁÉÅÉÇÉäÉäÅ[ÉNÇ‹Ç≈džÇÁljÇÈLJÇÃÇÉfÉoÉbÉOÇ≈Ç´ÇÈêîÅXÇÃÉRÉ}ÉìÉhÇ™í«â¡Ç≥ÇÍÇ‹Ç∑ÅB



MacsBug äTê‡

Java ÇÃÉfÉoÉbÉOÇ≈ MacsBug ÇégópÇ∑ÇÈÇ…ÇÕÅAÇ‹Ç∏ MacsBug ÇÉCÉìÉXÉgÅ[ÉãǵǃëÄçÏÇÃäÓñ{ÇäwÇ‘ïKóvǙdžÇËÇ‹Ç∑ÅBDZÇÍÇ‹Ç≈Ç… Mac É\ÉtÉgÉEÉFÉAÇÃäJî≠åoå±Ç™Ç®Ç†ÇËÇ»ÇÁÅAMacsBug ÇÕÇ∑Ç≈Ç…Ç≤ë∂Ç∂Ç≈ǵÇÂǧǩÇÁÅAéüÇÃêflÇ‹Ç≈ì«Ç›îÚnjǵǃÇ≠ÇæÇ≥Ç¢ÅB

ǵǩǵǻǙÇÁÅAMacintosh Ç≈ Java ÇÃäJî≠Ç‚ÉeÉXÉgÇçsǧêlÇÃǻǩDžÇÕÅAñ{óàÇà Mac ÉfÉxÉçÉbÉpÇ≈ÇÕÇ»Ç≠ÅAA ÉgÉâÉbÉvÇΔÅuA óÒé‘Ç≈çsDZǧÅvÇà A ÉgÉåÉCÉìÇÃà·Ç¢Ç™ÇÌÇ©ÇÁǻǢêlLJǢNjÇ∑ÅBDZÇÃêflÇÕDZǧǵÇΩêlÇÃÇΩÇflÇ…èëǴNjǵÇΩÅBDZÇÃÇΩÇflëºÇÃÉeÉNÉjÉJÉãÉmÅ[ÉgÇΔÇÕàŸÇ»ÇËÅAMac ÇÃãZèpíméØÇÃëΩÇ≠ÇÕëOíÒÇΔǵNjÇπÇÒÅB

MacsBug ÇΔÇÕ

MacsBug ÇÕÉAÉbÉvÉãÇ™äJî≠ǵÇΩ Mac OS Ç≈ìÆçÏÇ∑ÇÈÉAÉZÉìÉuÉäåæåÍÉåÉxÉãÇÃÉfÉoÉbÉKÇ≈ÅA680x0 ÇΔ PowerPC Ç…ëŒâûǵǃǢNjÇ∑ÅBÉAÉvÉäÉPÅ[ÉVÉáÉìÇ©ÇÁÉhÉâÉCÉoÇ‹Ç≈ÅAǪÇÃíÜä‘ÇÃLJÇÃLJä‹ÇflǃÅAëÂîºÇÃé¿çsä¬ã´Ç≈ìÆçÏÇ∑ÇÈÉRÅ[ÉhÇÃÉfÉoÉbÉOÇ…óòópÇ≈Ç´Ç‹Ç∑ÅBMac OS ÇÃÉVÉXÉeÉÄÉ\ÉtÉgÉEÉFÉAÇÃÉfÉxÉçÉbÉpÇÃÇŸÇ©ÅAÉTÅ[ÉhÉpÅ[ÉeÉBÇÃÉfÉxÉçÉbÉpÇ™ÉoÉOïÒçêÇÃéËíiÇΔǵǃégǧDZÇΔLJdžÇËÇ‹Ç∑ÅB

MacsBug Ç™îFéØÇ∑ÇÈÇÃÇÕÉAÉZÉìÉuÉäåæåÍÉåÉxÉãÇÃñΩóflÇæÇØÇ≈ÅAÉ\Å[ÉXÉRÅ[ÉhÇÕàÍêÿä¥ímǵNjÇπÇÒÅBçÇêÖèÄåæåÍÇÃÉfÅ[É^ç\ë¢Ç…ǬǢǃÇÕèâï‡ìIÇ»ÉTÉ|Å[ÉgǵǩdžÇËÇ‹ÇπÇÒÅBǵǩǵÉ}ÉVÉìÇÃèÛë‘Çê≥ämÇ…í≤Ç◊ÇÈÇÃÇ…ÇÕÇ∑ÇŒÇÁǵǢÉcÅ[ÉãÇ≈Ç∑ÅB

ëºÇÃëÂîºÇÃÉvÉâÉbÉgÉtÉHÅ[ÉÄÇÃÉfÉoÉbÉKÇΔÇÕàŸÇ»ÇËÅAMacsBug ÇÕǢǡÇΩÇÒÉCÉìÉXÉgÅ[ÉãÇ≥ÇÍÇÈÇΔÇ∏Ç¡ÇΔÉÅÉÇÉäÇ…óØÇ‹ÇËÇ‹Ç∑ÅBÉNÉâÉbÉVÉÖÇ™ãNDZǡÇΩÇËÅAÉzÉbÉgÉLÅ[ÇâüÇ∑ÇΔÅAÇ∑ÇÆÇ…êßå‰ÇälìæÇµÇ‹Ç∑ÅBÇΩÇΔǶÉ}ÉVÉìÇ™ÉtÉäÅ[ÉYǵǃǵNjǧÇÊǧǻèÛãµÇ≈LJ MacsBug ÇÕìÆçÏǵNjÇ∑ÅB

É_ÉEÉìÉçÅ[ÉhÇΔÉCÉìÉXÉgÅ[Éã

MacsBug ÇÕÉAÉbÉvÉãÇÃÉfÉxÉçÉbÉpÅ[ Web ÉTÉCÉgÇ©ÇÁì¸éËÇ≈Ç´Ç‹Ç∑ÅBï°éGÇ»äJî≠ÉcÅ[ÉãÇÕÇ«ÇÍLJǪǧÇ≈Ç∑Ç™ÅAê≥éÆÉäÉäÅ[ÉXëOÇ…âΩìxÇ©ÉvÉåÉäÉäÅ[ÉXî≈ÇΔǵǃíÒãüÇ≥ÇÍÇ‹Ç∑ÅBÇ‹ÇΩÅAç≈êVç≈çÇÇÃÉoÅ[ÉWÉáÉìÇÕÇŸÇΔÇÒÇ«ó·äOÇ»Ç≠ÉAÉãÉtÉ@î≈Ç‚ÉxÅ[É^î≈Ç≈Ç∑ÅBǵǩǵǻǙÇÁÅAç≈êVÇÃÉvÉåÉäÉäÅ[ÉXî≈ÇÉCÉìÉXÉgÅ[ÉãÇ∑ÇÈÇÃÇ™ÉxÉXÉgÇ≈Ç∑ÅBà¿íËìxÇ™îÒèÌÇ…çÇǢDZÇΔÇ™ÇÌǩǡǃǢÇÈÇ©ÇÁÇ≈Ç∑ÅB(DZÇÃÉeÉNÉjÉJÉãÉmÅ[ÉgÇÃé∑ïMéûì_Ç≈ÇÕÅAOS 8.5 ëŒâûÇÃLJÇÃÇÕÉvÉåÉäÉäÅ[ÉXî≈ǵǩdžÇËÇ‹ÇπÇÒÅB)

É_ÉEÉìÉçÅ[Éhâ¬î\Ç»ÉtÉ@ÉCÉãÇÕÇΩÇ≠Ç≥ÇÒdžÇËÇ‹Ç∑Ç™ÅAïKóvÇ»ÇÃÇÕ MacsBug Ç–ÇΔÇ¬ÇæÇØÇ≈Ç∑ÅBÅuinto System folderÅvÇΔǢǧÉtÉHÉãÉ_DždžÇÈÇÕÇ∏Ç≈Ç∑ÅBÉVÉXÉeÉÄÉtÉHÉãÉ_ (ã@î\ägí£ÉtÉHÉãÉ_Ç≈ÇÕdžÇËÇ‹ÇπÇÒ) DžDZÇÍÇÉhÉâÉbÉOǵǃÉ}ÉVÉìÇçƒãNìÆÇµÇƒÇ≠ÇæÇ≥Ç¢ÅBÉVÉXÉeÉÄÇÃÉuÅ[ÉgéûÇ…ÅAMac OS ÇÃÉXÉvÉâÉbÉVÉÖâÊñ ÇÃÅuWelcome To Mac OSÅvÇÃâ∫Ç…ÅuDebugger InstalledÅvÇΔǢǧï\é¶Ç™èoÇÈÇÕÇ∏Ç≈Ç∑ÅB

ä»íPÇ»äTóv

MacsBug ÇÃÉ}ÉjÉÖÉAÉãLJÉIÉìÉâÉCÉìÇ≈íÒãüÇ≥ÇÍǃǢNjÇ∑ÅBǵǩǵï™ó Ç™ëΩÇ≠ÅAì«ÇfiÇÃÇ™ÇΩÇ¢Ç÷ÇÒÇ≈Ç∑ÇÃÇ≈ (Ç®Ç‹ÇØÇ…Ç‚Ç‚å√Ç¢èÓïÒLJdžÇÈÇΩÇfl)ÅAJava ÇÃÇ›ÇÃÉfÉxÉçÉbÉpÇÕLJǃdžNjÇ∑ǩLJǵÇÍÇ‹ÇπÇÒÅBDZÇÃÇΩÇflDZDZDžä»íPÇ»ì¸ñÂï“Çåfç⁄ǵNjÇ∑ÅB

MacsBug ÇÕÉuÅ[ÉgÉvÉçÉZÉXÇÃèâä˙Ç…ÉÅÉÇÉäÇ…ÉçÅ[ÉhÇ≥ÇÍÅAïKóvÇ…Ç»ÇÈÇ‹Ç≈âBÇÍǃǢNjÇ∑ (ëΩè≠Çà RAM ÇÕè¡îÔǵNjÇ∑Ç™)ÅBMacsBug ÇÕéüÇà 3 ǬÇÃèÛãµÇ≈ìoèÍǵNjÇ∑ÅB

  1. CPU ó·äOÇ‚ÉVÉXÉeÉÄÉGÉâÅ[ÇÃî≠ê∂ÅBÇ¢Ç∏ÇÍLJǔǬǧÇÕÅuÉNÉâÉbÉVÉÖÅvÇΔåƒÇŒÇÍÇ‹Ç∑ÅBMacsBug Ç™ÉCÉìÉXÉgÅ[ÉãÇ≥ÇÍǃǢǻǢèÍçáÇ…ó·äOÇ‚ÉGÉâÅ[Ç™î≠ê∂Ç∑ÇÈÇΔÅAÅuó\ä˙ÇπÇ èIóπÅvÉAÉâÅ[ÉgǂdžÇÈÇ¢ÇÕÇÊÇËê[çèÇ»îöíeÉ{ÉbÉNÉXÇ™ï\é¶Ç≥ÇÍÇ‹Ç∑ÅB

  2. ÉVÉXÉeÉÄÉãÅ[É`ÉìÇà Debugger Ç‹ÇΩÇÕ DebugStr ÇÃåƒÇ—èoǵÅBMacsBug ÇÕí èÌÉÅÉbÉZÅ[ÉWÇΔÇΔLJDžÉÜÅ[ÉUÉuÉåÅ[ÉNÇïÒçêǵNjÇ∑ÅBDZÇÃï˚ñ@Ç≈É\ÉtÉgÉEÉFÉAÇ©ÇÁäÎåØÇ†ÇÈÇ¢ÇÕó\ä˙ÇπÇ èÛãµÇ≈džÇÈDZÇΔÇåxçêÇ∑ÇÈÉÅÉbÉZÅ[ÉWÇÉÜÅ[ÉUÇ…í ímÇ≈Ç´Ç‹Ç∑ÅBÉÜÅ[ÉUÉuÉåÅ[ÉNÇÕì¡éÍÇ»ÉfÉoÉbÉOÉoÅ[ÉWÉáÉìÇÃÉ\ÉtÉgÉEÉFÉAǵǩégǧÇ◊Ç´Ç≈ÇÕdžÇËÇ‹ÇπÇÒÅB

  3. élǬótÇÃàÛÇÃïtÇ¢ÇΩ Command ÉLÅ[ÇâüǵǻǙÇÁìdåπÉLÅ[ (É}ÉVÉìÇåoÇøè„Ç∞ÇÈÇΔÇ´Ç…âüÇ∑éOäpàÛÇÃïtÇ¢ÇΩÉLÅ[) ÇìØéûÇ…âüǵǃÅAÉÜÅ[ÉUé©êgÇ≈ MacsBug ÇãNìÆÇµÇ‹Ç∑ÅBÉRÉìÉsÉÖÅ[É^Ç™ÉtÉäÅ[ÉYèÛë‘Ç≈LJDZÇÃï˚ñ@ÇÕóLå¯Ç≈Ç∑ÅBLJǵãNìÆÇ≈ǴǻǢÇΔÇ∑ÇÍÇŒÅAǪÇÍÇÕç≈à´ÇÃéñë‘Ç≈ÅACommand ÉLÅ[ÇΔ Control ÉLÅ[ÇΔìdåπÉLÅ[ÇìØéûÇ…âüǵǃã≠êßçƒãNìÆÇçsǧǵǩdžÇËÇ‹ÇπÇÒ (ÅuéOñ{éwÇÃÇ≤à•éAÅvÇΔåƒÇŒÇÍÇÈâÛñ≈ìIÇ»èÛãµÇ≈Ç∑)ÅB

MacsBug Ç™ìoèÍÇ∑ÇÈÇΔâÊñ ÇΔ CPU ÇäÆëSÇ…ìΔêËǵNjÇ∑ÅBMacsBug Ç™ï\é¶Ç≥ÇÍǃǢÇÈÇ†Ç¢ÇæÇÕÅAÇŸÇ©ÇÃÇ«ÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìLJ OS É\ÉtÉgÉEÉFÉALJìÆçÏÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹ÇπÇÒÅBMacsBug ÇÃÉÜÅ[ÉUÉCÉìÉ^ÉtÉFÅ[ÉXÇ™ëSÇ≠ Mac ÇÁǵÇ≠ǻǢÇÃÇÕDZÇÃÇΩÇflÇ≈Ç∑ÅBMacsBug ÇÕÉcÅ[ÉãÉ{ÉbÉNÉXÇÃÇ«ÇÃÉãÅ[É`ÉìLJégǧDZÇΔÇ™Ç≈ǴǻǢÇÃÇ≈Ç∑ÅB

MacsBug ÇÕÅADOS Ç‚ UNIX ÇÃÉVÉFÉãÇΔìØólÇÃÉRÉ}ÉìÉhÉâÉCÉìä¬ã´Ç≈Ç∑ÅBâÊñ ÇÃíÜâõÇ…å≈íËÉTÉCÉYÇÃÉEÉBÉìÉhÉEÇ™ 1 å¬ï\é¶Ç≥ÇÍÇ‹Ç∑ÅBǪÇÃÉEÉBÉìÉhÉEÇÃäOë§ÇÃïîï™Ç…ÇÕÉSÉ~ÇÃÉsÉNÉZÉãÇ™ï\é¶Ç≥ÇÍǃǢNjÇ∑ÅBàÍî‘â∫ÇÃçsÇ™ì¸óÕçsÇ≈ÅAǪÇÃè„Ç…ã@äBåÍÉRÅ[ÉhÇãtÉAÉZÉìÉuÉãǵÇΩLJÇÃÇ™êîçsï\é¶Ç≥ÇÍǃǢNjÇ∑ÅBǪÇÃè„Ç…ÇÕëÂÇ´Ç»ÉXÉNÉçÅ[Éãâ¬î\Ç»èoóÕóÃàÊǙdžÇËÇ‹Ç∑ÅBç∂ë§Ç…ÇÕÉåÉWÉXÉ^ÇΔÉXÉ^ÉbÉNÇÃì‡óeÇ™ï\é¶Ç≥ÇÍǃǢNjÇ∑ÅB

ÉRÉ}ÉìÉhÇÕÅAç≈â∫çsÇÃì¸óÕçsÇ…É^ÉCÉvǵÅAÉäÉ^Å[ÉìÉLÅ[Çâüǵǃé¿çsǵNjÇ∑ÅBÉ}ÉEÉXÇ≈ÉeÉLÉXÉgÇëIëÇ∑ÇÈDZÇΔÇÕÇ≈Ç´Ç‹ÇπÇÒÇ™ÅAëÂîºÇÃïWèÄìIÇ»ï“èWÉLÅ[ÇÕégópÇ≈Ç´Ç‹Ç∑ (ñÓàÛÉLÅ[ÅADelete ÉLÅ[ÅAëOï˚ Delete ÉLÅ[ÅAOption ÉLÅ[ÇΔñÓàÛÉLÅ[ÇÃëgÇ›çáÇÌÇπÅACommand ÉLÅ[ÇΔñÓàÛÉLÅ[ÇÃëgÇ›çáÇÌÇπǻǫ)ÅBCommand-V Ç≈íºëOÇÃÉRÉ}ÉìÉhÇì¸óÕçsÇ…åƒÇ—èoÇ∑DZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

èdóvÉRÉ}ÉìÉh

MacsBug Ç≈ç≈LJèdóvÇ»ÉRÉ}ÉìÉhÇÕéüÇÃÇΔÇ®ÇËÇ≈Ç∑ÅB

  • help -- ÉwÉãÉvÉIÉvÉVÉáÉìàÍóóÇï\é¶ÇµÇ‹Ç∑ÅBÅuhelpÅvÇÃå„Ç…ÉRÉ}ÉìÉhÇ‚çÄñ⁄ÇÃñºëOÇÉ^ÉCÉvÇ∑ÇÈÇΔè⁄ǵǢèÓïÒÇ™ï\é¶Ç≥ÇÍÇ‹Ç∑ÅB

  • g -- ÅugoÅvÇÃÅugÅvÇ≈Ç∑ÅBí èÌìÆçÏÇ÷ÇÃïúãAÇéwé¶ÇµÇ‹Ç∑ÅBDZÇÍÇÕÅACommand ÉLÅ[+ìdåπÉLÅ[Ç≈åÃà”Ç… MacsBug Ç…ì¸Ç¡ÇΩèÍçáÇΔÉÜÅ[ÉUÉuÉåÅ[ÉNÇÃå„Ç≈ǵǩìÆçÏǵNjÇπÇÒÅBÉVÉXÉeÉÄÇ™ÉNÉâÉbÉVÉÖǵÇΩå„ÇÕí èÌìÆçÏÇÕñ]ÇflÇ‹ÇπÇÒÅB

  • es -- ÅuExit to ShellÅvÇ≈Ç∑ÅBåªç›ÉAÉNÉeÉBÉuÇ»ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃã≠êßèIóπÇéwé¶ÇµÇ‹Ç∑ÅBMacsBug ÇéùÇΩǻǢÉÜÅ[ÉUÇ™égópÇ∑ÇÈ Command+Option+Escape Ç…ÇÊÇÈÉpÉjÉbÉNÉ{É^ÉìÇΔëSÇ≠ìØÇ∂Ç≈Ç∑ÅBDZÇÍÇÕÉVÉXÉeÉÄÇÃîjâÛíˆìxÇ…ÇÊÇËǧNjÇ≠Ç¢Ç≠èÍçáÇΔǪǧÇ≈ǻǢèÍçáÇΔǙdžÇËÇ‹Ç∑ÅBÇ‹ÇΩÅAMacsBug Ç…ì¸Ç¡ÇΩéûì_ÇΔìØÇ∂é¿çsà íuÇ…Ç¢ÇÈǩǫǧǩDžLJç∂âEÇ≥ÇÍÇ‹Ç∑ÅBÉRÉ}ÉìÉhÇ™ê¨å˜Ç∑ÇÍÇŒÇ∑ÇÆïúãAǵNjÇ∑ÅBǧNjÇ≠çsǩǻǢèÍçáÇÕéüÇÃÅursÅvÇégópǵǃÇ≠ÇæÇ≥Ç¢ÅB

  • rs -- ÅuReStartÅvÇ≈Ç∑ÅBé·ä±ÇÃå„énññ (ÉfÉBÉXÉNÉLÉÉÉbÉVÉÖÇÃìfÇ´èoǵǻǫ) ÇǵǃǩÇÁÉVÉXÉeÉÄÇçƒãNìÆ (ÉäÉuÅ[Ég) ǵNjÇ∑ÅBCommand+Control+ìdåπÉLÅ[ÇâüÇ∑Ç©ÅAìdåπÉRÅ[ÉhÇà¯Ç´î≤Ç≠ÇÊÇËÇÕâ∏ǂǩǻëŒèàñ@Ç≈ÅAÉfÉBÉXÉNÇÃîjëπÇÕãNDZÇËÇ…Ç≠Ç¢Ç≈Ç∑ÅB

  • stdlog -- åªç›ÇÃÉ}ÉVÉìÇÃèÛë‘Çï\Ç∑ëÂó ÇÃèÓïÒÇä‹ÇfiÉeÉLÉXÉgÉtÉ@ÉCÉãÇÉfÉXÉNÉgÉbÉvÇ…èëÇ´èoǵNjÇ∑ÅBÉAÉbÉvÉãÇÕÅAMRJ Ç…ä÷òAǵǃãNDZǡÇΩÉNÉâÉbÉVÉÖÇ‚ÉÜÅ[ÉUÉuÉåÅ[ÉNÇïÒçêǵǃLJÇÁǧç€Ç…DZÇÃèÓïÒÇãÅÇflÇÈèÍçáǙdžÇËÇ‹Ç∑ÅB

  • log -- log ÉRÉ}ÉìÉhÇ…ë±ÇØÇƒÉtÉ@ÉCÉãñºÇéwíËÇ∑ÇÈÇΔÅAà»ç~Çà MacsBug èoóÕÇÕǪÇÃÉtÉ@ÉCÉãÇ…èëÇ´çûÇ‹ÇÍÇ‹Ç∑ÅB(ÉtÉ@ÉCÉãÇÕí èÌåªç›ÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃíuÇ©ÇÍÇΩÉtÉHÉãÉ_Ç…Ç≈Ç´Ç‹Ç∑ÅB) ÉtÉ@ÉCÉãñºÇéwíËǵǻǢÇ≈ÅulogÅvÇΔÇæÇØÉ^ÉCÉvÇ∑ÇÈÇΔÉçÉOÇ÷ÇÃèëÇ´çûÇ›Çí‚é~ǵNjÇ∑ÅB

êÊì™ÉyÅ[ÉWÇ…ñflÇÈ


ÅumrjÅvdcmd

ÉAÉbÉvÉãÇÕÅumrjÅvÇΔåƒÇŒÇÍÇÈêVǵǢÉRÉ}ÉìÉhÇí«â¡Ç∑ÇÈ MacsBug ÇÃÉvÉâÉOÉCÉì (ÅudcmdÅvÇΔåƒÇŒÇÍÇ‹Ç∑) ÇçÏê¨ÇµÇ‹ÇµÇΩÅBãÔëÃìIÇ…åæÇ§ÇΔÅAÅumrjÅvÇ…ë±ÇØÇƒÉ^ÉCÉvÇ∑ÇÈñºëOÇ…âûÇ∂ǃåƒÇ—èoÇ≥ÇÍÇÈï°êîÇÃêVǵǢÉRÉ}ÉìÉhÇ™í«â¡Ç≥ÇÍNjǵÇΩÅBó·Ç¶ÇŒÅAÅumrj scÅvÇÕ Java ÇÃÉXÉ^ÉbÉNÉNÉçÅ[Éã (åƒÇ—èoǵDžâàǡǃÉXÉ^ÉbÉNÉtÉåÅ[ÉÄÇï\é¶ÇµÇΩLJÇÃ) Çï\é¶ÇµÇ‹Ç∑ÅB

DZÇà dcmd ÇÕ MRJ SDK Ç…ä‹Ç‹ÇÍǃǮÇËÅAÅuTools: Other Tools: MRJ dcmd for PPC:ÅvÇΔǢǧÉtÉHÉãÉ_DždžÇËÇ‹Ç∑ÅBÅuMRJ dcmdÅvÇΔǢǧÉtÉ@ÉCÉãÇÉVÉXÉeÉÄÉtÉHÉãÉ_ÇÃÅuèâä˙ê›íË (Preferences)ÅvÉtÉHÉãÉ_ÇÃÅuMacsBug PreferencesÅvÉtÉHÉãÉ_Ç…ì¸ÇÍǃçƒãNìÆÇµÇƒÇ≠ÇæÇ≥Ç¢ÅB

DZÇà dcmd ÇégópÇ∑ÇÈÇ…ÇÕÅAJava ÉAÉvÉäÉPÅ[ÉVÉáÉìÇ©ÉAÉvÉåÉbÉgÇé¿çsÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBÇ≈ǻǢÇΔÅADZÇà dcmd ÇÃëÂîºÇÃÉRÉ}ÉìÉhÇÕóòópÇ≈ǴǻǢǩÅAà”ñ°Ç™Ç†ÇËÇ‹ÇπÇÒÅB

èdóvÅF
à»â∫Ç≈ê‡ñæÇ∑ÇÈÉRÉ}ÉìÉhÇÃÇŸÇΔÇÒÇ«Ç∑Ç◊ǃǙ MRJ 2.1 Ç≈ǵǩìÆçÏǵNjÇπÇÒÅBMRJ 2.0 SDK Ç…ÇÕå√Ç¢ÉoÅ[ÉWÉáÉìÇà dcmd Ç™ä‹Ç‹ÇÍǃǢNjÇ∑Ç™ÅADZÇÍÇ…ÇÕêîå¬ÇÃÉRÉ}ÉìÉhǵǩdžÇËÇ‹ÇπÇÒÅBïKÇ∏ MRJ 2.1 SDK Çà dcmd ÇÉCÉìÉXÉgÅ[ÉãǵǃÇ≠ÇæÇ≥Ç¢ÅB

Ç®ífÇËÅF
DZÇÃÉeÉNÉjÉJÉãÉmÅ[ÉgÇÕ MRJ 2.1 DžǬǢǃÇÃê‡ñæÇ≈Ç∑ÅBDZÇà dcmd ÇÃã@î\Ç‚ÉRÉ}ÉìÉhÇÃè⁄ç◊ÇÕÅAè´óàÇà JVM ÇÃâ¸ó«Ç…î∫Ç¢ïœçXÇ≥ÇÍÇÈâ¬î\ê´Ç™Ç†ÇËÇ‹Ç∑ÅBJVM ÇÃäeèäÇÃïœçXÇ…î∫Ç¢ÅAëŒâûïîï™ÇÃÉRÉ}ÉìÉhÇ‚ã@î\ǙǻÇ≠Ç»ÇÈèÍçáLJdžÇËÇ‹Ç∑ÅB

êÊì™ÉyÅ[ÉWÇ…ñflÇÈ


äÓñ{ÉRÉ}ÉìÉh

DZDZÇ≈ÇÕïpî…Ç…égópÇ∑ÇÈÉRÉ}ÉìÉhDžǬǢǃê‡ñæÇµÇ‹Ç∑ÅB(DZDZÇ≈è–âÓǵǻǢÉRÉ}ÉìÉhÇÕëÂîºÇ™ì‡ïîÉfÅ[É^ç\ë¢ÇéQèΔÇ∑ÇÈÇΩÇflÇÃÉRÉ}ÉìÉhÇ≈ÅAMRJ é©ëÃÇÉfÉoÉbÉOÇ∑ÇÈÇΩÇflÇÃLJÇÃÇ≈Ç∑ÅB)

DZÇà dcmd Ç…âΩLJÉRÉ}ÉìÉhÇéwíËǵǻǢÇ≈åƒÇ—èoÇ∑ÇΔ (ǬNjÇËíPÇ…ÅumrjÅvÇΔÉ^ÉCÉvÇ∑ÇÈ)ÅAíZÇ¢ÉRÉ}ÉìÉhàÍóóÇï\é¶ÇµÇ‹Ç∑ÅB

Java ÉçÉO (mrjlog)

DZÇÍÇÕÅustdlogÅvÇà Java ëŒâûî≈Ç≈Ç∑ÅBåªç›Çà Java ÇÃèÛë‘Çé¶Ç∑ÇΩÇ≠Ç≥ÇÒÇÃèÓïÒÇÉfÉXÉNÉgÉbÉvÇ…ÉeÉLÉXÉgÉtÉ@ÉCÉãÇΔǵǃèëÇ´èoǵNjÇ∑ÅBÅumrjÅvÇΔÅulogÅvÇÃä‘Ç…ÇÕÉXÉyÅ[ÉXÇì¸ÇÍǻǢÇ≈Ç≠ÇæÇ≥Ç¢ÅBé¿ÇÕDZÇÃÉRÉ}ÉìÉhÇÕÉ}ÉNÉçÇ≈ÅAÉçÉOÉtÉ@ÉCÉãÇäJǢǃÅAǪDZDžǢÇ≠ǬǩÇà mrj dcmd ÉRÉ}ÉìÉhÇÃèoóÕÇèëÇ´çûǛNjÇ∑ÅB

ÉXÉ^ÉbÉNÉNÉçÅ[Éã (mrj sc)

åªç›ÇÃÉXÉåÉbÉhÇΔǪÇà Java ÉXÉ^ÉbÉNÇ…ä÷Ç∑ÇÈèÓïÒÇï\é¶ÇµÇ‹Ç∑ÅBåªç›ÇÃÉXÉ^ÉbÉNÉtÉåÅ[ÉÄÇ™ç≈èâÇ…ï\é¶Ç≥ÇÍÇ‹Ç∑ÅBà»â∫Ç≈è⁄ç◊Çê‡ñæÇµÇ‹Ç∑ÅB

ÉXÉåÉbÉhÇÃï\é¶ (mrj threads)

Ç∑Ç◊ǃÇÃÉAÉNÉeÉBÉuÉXÉåÉbÉhÇΔÉXÉ^ÉbÉNÇÃèÓïÒÇï\é¶ÇµÇ‹Ç∑ÅBäeÉXÉåÉbÉhÇ™éÊìæÇµÇΩÉÇÉjÉ^ (Java ÇÃåæótÇ≈åæÇ¶ÇŒÅAåªç› synchronized Ç≈ìØä˙Ç™éÊÇÁÇÍǃǢÇÈÉIÉuÉWÉFÉNÉgÇ≈Ç∑) LJï\é¶Ç≥ÇÍÇ‹Ç∑ÅBï\é¶ÇÃç≈å„ïîÇ…ÇÕàÍî‘ç≈å„Ç…égópǵÇΩÉÇÉjÉ^ÇÃÉLÉÉÉbÉVÉÖÅAǪÇÃèäóLé“ÅAǪÇÃÉÇÉjÉ^Çë“ǬÉXÉåÉbÉhÇ™ï\é¶Ç≥ÇÍÇ‹Ç∑ÅB

ÉfÉbÉhÉçÉbÉNÇÃåüèo (mrj dl)

è]óàå^ÇÃÉfÉbÉhÉçÉbÉNÇåüèoǵNjÇ∑ÅBDZÇÍÇÕ 2 ǬÇÃÉXÉåÉbÉhǙǪÇÍǺÇÍëäéËÇÃèäóLÇ∑ÇÈÉÇÉjÉ^ÇÃë“ÇøÇ≈ÉuÉçÉbÉNǵǃǢÇÈèÛë‘Ç≈Ç∑ÅBÉfÉbÉhÉçÉbÉNèÛë‘ǙdžÇÈÇΔÅAäYìñÇÃÉXÉåÉbÉhÇΔÉÇÉjÉ^Ç…ä÷Ç∑ÇÈèÓïÒÇ™ï\é¶Ç≥ÇÍÇ‹Ç∑ÅB

ìØä˙É`ÉFÉbÉN (mrj sync)

ÉfÉbÉhÉçÉbÉNà»äOÇÃìØä˙Ç…ìZÇÌÇÈñ‚ëËÇåüèoǵNjÇ∑ÅBâΩÇ©î≠å©Ç≥ÇÍÇÈÇΔä÷òAèÓïÒÇ™ï\é¶Ç≥ÇÍÇ‹Ç∑ÅBǪÇÍÇ…ÇÕéüÇÃLJÇÃǙdžÇËÇ‹Ç∑ÅB

  • âΩÇÁÇ©ÇÃÉÇÉjÉ^Çï€éùÇ∑ÇÈ (âΩǩDžëŒÇµÇƒìØä˙ÇéÊǡǃǢÇÈ) ÉXÉåÉbÉhÇ™ Object.wait Ç≈ÉuÉçÉbÉNǵǃǢÇÈÅB
  • ÇŸÇ©ÇÃÉÇÉjÉ^Çï€éùÇ∑ÇÈÉXÉåÉbÉhÇ™ï ÇÃÉÇÉjÉ^Ç≈ÉuÉçÉbÉNǵǃǢÇÈÅB
  • ÉÇÉjÉ^Çï€éùÇ∑ÇÈÉXÉåÉbÉhÇ™ (Thread.suspend Ç≈) é¿çsÇí‚é~ǵǃǢÇÈÅB

è„ãLÇÃÇ«ÇÃèÛãµÇ‡àŸèÌǻLJÇÃÇ≈ÇÕdžÇËÇ‹ÇπÇÒÇ™ÅADZÇÍÇ™ãNDZÇÈÇΔÅAÉfÉbÉhÉçÉbÉNÇ…ä◊ÇËÇ‚Ç∑Ç≠ã^ÇÌǵǢèÛë‘ÇΔåæÇ¶Ç‹Ç∑ÅB

ÉäÉ_ÉCÉåÉNÉNÉgèoóÕ (mrj redirect ÉtÉ@ÉCÉãñº)

System.out ÇΔ System.err ÇÅAéwíËÇ≥ÇÍÇΩñºëOÇÃÉtÉ@ÉCÉãÇ…êÿÇËë÷ǶNjÇ∑ÅBÅuÉtÉ@ÉCÉãñºÅvÇÕê‚ëŒÉpÉXÇ≈Ç»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBÅuÉtÉ@ÉCÉãñºÅvÇ™éwíËÇ≥ÇÍǻǢÇΔëSÇ≠èoóÕÇÕçsÇÌÇÍÇ‹ÇπÇÒÅB

ÉäÉ_ÉCÉåÉNÉgÇÕÇ∑ÇÆÇ…ÇÕóLå¯Ç…Ç»ÇËÇ‹ÇπÇÒÅBèÛë‘ïœçXÇÃÇΩÇflÇ…ÇÕàÍíËÇà Java ÉRÅ[ÉhÇåƒÇ—èoÇ∑ïKóvǙdžÇËÅAMacsBug Ç™åƒÇŒÇÍÇΩéûì_Çà JVM ÇÕí èÌǪÇÍÇ™â¬î\Ç»èÛë‘DždžÇËÇ‹ÇπÇÒÅBDZÇÃÇΩÇflÅAéüâÒÉÅÉCÉìÉXÉåÉbÉhÇ™é¿çsÇ≥ÇÍÇÈÇ‹Ç≈óvãÅÇÕï€óØÇ≥ÇÍÇ‹Ç∑ÅB

Java ÉqÅ[ÉvÇÃóòópèÛãµ (mrj chunks)

Java ÉIÉuÉWÉFÉNÉgÉqÅ[ÉvÇ®ÇÊÇ—ëŒâûÇ∑ÇÈÉnÉìÉhÉãÉqÅ[ÉvÇÃëçó ÅAégópçœÇ›ÅAãÛÇ´ÇÃó Ç™ï\é¶Ç≥ÇÍÇ‹Ç∑ÅBÉqÅ[Évì‡ÇÃÉÅÉÇÉäÉuÉçÉbÉN (É`ÉÉÉìÉN) Ç…ä÷Ç∑ÇÈèÓïÒLJï\é¶Ç≥ÇÍÇ‹Ç∑ (DZÇÍÇÕí èÌóLâvÇ»èÓïÒÇ≈ÇÕdžÇËÇ‹ÇπÇÒ)ÅB

MRJ ì‡Çà Java à»äOÇÃÉqÅ[ÉvÇÃóòópèÛãµ (mrj alloch)

MRJ Ç™ÉIÉuÉWÉFÉNÉgï€éùà»äOÇÃñ⁄ìIÇ≈égópÇ∑ÇÈÉÅÉÇÉäó Çï\é¶ÇµÇ‹Ç∑ÅBDZÇÍÇ…ÇÕÅA.class ÉtÉ@ÉCÉãÇ©ÇÁÉçÅ[ÉhÇ≥ÇÍÇΩÉfÅ[É^Ç‚ÅAÉNÉâÉXÇ‚ÉXÉåÉbÉhǻǫDžëŒâûïtÇØÇÁÇÍÇΩÉfÅ[É^ç\ë¢Ç™ä‹Ç‹ÇÍÇ‹Ç∑ÅB

ÉÇÉjÉ^ÇÃåüçı (mrj fm ÉÇÉjÉ^)

éwíËÇ≥ÇÍÇΩ ID ÇéùǬÉÇÉjÉ^Ç…ëŒâûïtÇØÇÁÇÍÇΩÉIÉuÉWÉFÉNÉgÇíTǵÅAǪÇÃÉNÉâÉXñºÇΔÉnÉìÉhÉãÇï\é¶ÇµÇ‹Ç∑ÅBÉÇÉjÉ^Çà ID ÇÕ mrj sc džÇÈÇ¢ÇÕ mrj threads ÇÃï\é¶Ç≈Åumon:ÅvÇÃâ”èäÇ…ï\é¶Ç≥ÇÍÇÈLJÇÃÇ≈Ç∑ÅBÉnÉìÉhÉãÇ™éÊìæÇ≈Ç´ÇÍÇŒÅAmrj do ǻǫÇÃÉIÉuÉWÉFÉNÉgåüç∏ÉRÉ}ÉìÉhÇégǡǃÅAǪÇÃÉIÉuÉWÉFÉNÉgÇ…ä÷Ç∑ÇÈè⁄ç◊èÓïÒÇí≤Ç◊ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

ÉÅÉ\ÉbÉhÇÃé¿çs (mrj exec ÉNÉâÉXñº ÉÅÉ\ÉbÉhñº)

MRJ ÇÃÉÅÉCÉìÉXÉåÉbÉhÇ™êßå‰ÇéÊìæÇ∑ÇÈÇ‹Ç≈ë“ÇøÅAÉpÉâÉÅÅ[É^ÇéùÇΩÇ∏ÅAï‘ÇËílLJǻǢ (void)ÅAstatic Ç»ÉÅÉ\ÉbÉhÇåƒÇ—èoǵNjÇ∑ÅBÅuÉNÉâÉXñºÅvÇÕÅAÅu/ÅvÇ≈ãÊêÿÇ¡ÇΩÉpÉbÉPÅ[ÉWñºÇÃïtÇ¢ÇΩäÆëSÇ»ñºëOÇ≈Ç»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBÉNÉâÉXñºÇΔÉÅÉ\ÉbÉhñºÇÕÉXÉyÅ[ÉXÇ≈ãÊêÿÇËÇ‹Ç∑ÅBÅu.ÅvÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅB

DZÇÃÉRÉ}ÉìÉhÇÕDZÇÃNjNjÇ≈ÇÕdžNjÇËñÇ…ÇÕóßÇøÇ‹ÇπÇÒÅBǵǩǵÇ≤é©ï™ÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇ…è„ãLÇÃÇÊǧǻÉÅÉ\ÉbÉhÇí«â¡Ç∑ÇÈDZÇΔÇ≈ÅAã≠óÕÇ»ÉfÉoÉbÉOÉcÅ[ÉãÇΔÇ»ÇËÇ‹Ç∑ÅBó·Ç¶ÇŒÅAÉfÉtÉHÉãÉgÇÃÉãÅ[ÉgÉpÉbÉPÅ[ÉWÇ… Debug ÇΔǢǧÉNÉâÉXÇí«â¡ÇµÅAǪÇÍÇ… dumpState Ç‚ startLogging ÇΔǢǡÇΩ staticÅAvoid Ç»ÉÅÉ\ÉbÉhÇí«â¡ÇµÇ‹Ç∑ÅBDZǧÇ∑ÇÍnjǢǬÇ≈LJÅACommand ÉLÅ[+ìdåπÉLÅ[ÇâüǵǃÅumrj exec Debug dumpStateÅvǻǫÇΔÉ^ÉCÉvǵǃÅAÉRÉìÉ\Å[ÉãÇ…óLâvÇ»èÓïÒÇï\é¶Ç∑ÇÈDZÇΔÇ™Ç≈Ç´ÇÈÇÌÇØÇ≈Ç∑ÅB

éQèΔÇÃåüçı (mrj fr ÉnÉìÉhÉã)

éwíËÇ≥ÇÍÇΩÉIÉuÉWÉFÉNÉgÇéQèΔÇ∑ÇÈLJÇÃÇÅuî‰ärìIìOíÍìIÅvÇ…åüçıǵNjÇ∑ÅBÉIÉuÉWÉFÉNÉgÇ™ÉKÅ[ÉxÉWÉRÉåÉNÉVÉáÉìÇÃëŒè€Ç…Ç»ÇÁǻǢóùóRÇíTÇÈÇΔÇ´Ç…ï÷óòÇ≈Ç∑ÅBÅuî‰ärìIìOíÍìIÅvÇΔǢǡÇΩÇÃÇÕÅADZÇÃÉRÉ}ÉìÉhÇÃåüçıîÕàÕÇÕÉIÉuÉWÉFÉNÉgÉqÅ[ÉvÇΔ JNI ÇÃëÂàÊìIÇ»éQèΔÇæÇØÇ≈ÅAÉXÉåÉbÉhÉXÉ^ÉbÉNÇÕä‹Ç‹Ç»Ç¢ÇΩÇflÇ≈Ç∑ÅBǵÇΩǙǡǃÅAǪÇÃÉIÉuÉWÉFÉNÉgÇéQèΔÇ∑ÇÈÇ∑Ç◊ǃÇÃLJÇÃÇ™å©Ç¬Ç©ÇÈÇÌÇØÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅB

éQèΔë§ÇÃèÓïÒÇÕ 1 çsÇ… 1 å¬Ç∏Ǭï\é¶Ç≥ÇÍÅAÅuinstance fieldÅvÇ‚Åuarray elementÅvÇΔǢǡÇΩê‡ñæÇ™ïtÇ´Ç‹Ç∑ÅBéQèΔÇä‹ÇfiÉIÉuÉWÉFÉNÉgÇÃÉnÉìÉhÉãÇ™ï\é¶Ç≥ÇÍÇÈÇÃÇ≈ÅAï Çà mrj fr ÉRÉ}ÉìÉhDžǪÇÃÉnÉìÉhÉãÇéwíËǵǃÅAÇ≥ÇÁÇ…ê[Ç≠éQèΔä÷åWÇíHÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

éQèΔåüçıÉRÉ}ÉìÉhÇ…ÇÕLJǡÇΔï°éGÇ» mrj graphrefs LJdžÇËÇ‹Ç∑Ç™ÅADZÇÍÇÕÉfÉoÉbÉOÉrÉãÉhÇ≈ǵǩóòópÇ≈Ç´Ç‹ÇπÇÒÅB

ñΩóflÇÃï\é¶ (mrj il ÉÅÉ\ÉbÉhñº)

ÉÅÉ\ÉbÉhÇÃÉoÉCÉgÉRÅ[ÉhÇãtÉAÉZÉìÉuÉãǵNjÇ∑ÅBÉÅÉ\ÉbÉhÇÃñºëOÇÕéüÇ…é¶Ç∑ÇÊǧDží èÌÇÃì‡ïîå`éÆÇ≈éwíËǵǃÇ≠ÇæÇ≥Ç¢ÅB

  • Åu/ÅvÇ≈ãÊêÿÇ¡ÇΩÉpÉbÉPÅ[ÉWñºÇÃïtÇ¢ÇΩäÆëSÇ»ÉNÉâÉXñºÇ…ë±ÇØÇƒÅA
  • Åu.Åv
  • ÉÅÉ\ÉbÉhñº
  • Åu.ÅvÇΔë±ÇØÇƒÅA
  • äáå ÇÃǻǩDžÉGÉìÉRÅ[ÉhÇ≥ÇÍÇΩäeÉpÉâÉÅÅ[É^ÇÃå^ÇèëÇ´ÅA
  • ǪÇÍÇ…ë±ÇØÇƒÉGÉìÉRÅ[ÉhÇ≥ÇÍÇΩï‘ÇËílÇÃå^ÇéwíËÇ∑ÇÈÅB

éwíËó·ÅF

il java/lang/Thread.join.()V
      disassembly from $659ed84 java.lang.Thread.join(Thread.java:873)
      disassembly from $659ed84 java.lang.Thread.join(Thread.java:873)
	  [0]  2A aload_0
	  [1]  9 lconst_0
	  [2]  E2 invokevirtual_quick_w Method: "java/lang/Thread.join(J)V"
	  [5]  B1 return

êÊì™ÉyÅ[ÉWÇ…ñflÇÈ


ÉfÉoÉbÉOÉrÉãÉhÇ≈ÇÃÇ›óòópâ¬î\Ç»ÉRÉ}ÉìÉh

MRJ ÇÃÉfÉoÉbÉOÉrÉãÉhÇégǧÇΔÅAMRJ dcmd ÇÃÇ§ÇøÅAóòópâ¬î\Ç»ÉRÉ}ÉìÉhÇ™ëùǶNjÇ∑ÅB(í èÌÇÃÉrÉãÉhÇ≈ÇÕDZÇÍÇÁÇÃÉRÉ}ÉìÉhÇÕÉTÉ|Å[ÉgÇ≥ÇÍÇ‹ÇπÇÒÅBMRJ Ç™íxÇ≠ǻǡÇΩÇËÅAÉÅÉÇÉäÇëΩÇ≠égópǵÇΩÇËÅAǪÇÃóºï˚ÇÃDZÇΔÇ™ãNDZÇËǧÇÈÇΩÇflÇ≈Ç∑ÅB)

ÉfÉoÉbÉOÉrÉãÉhÇÃèÍçáÅAå¿íËìIǻLJÇÃÇ≈Ç∑Ç™ÅAÉXÉåÉbÉhÉXÉPÉWÉÖÅ[ÉâÇ…ÉfÉbÉhÉçÉbÉNÉ`ÉFÉbÉNã@î\Ç™ëgÇ›çûÇ‹ÇÍǃǢNjÇ∑ÅBè]óàå^Çà 2 ÉXÉåÉbÉhÇ…ÇÊÇÈÉfÉbÉhÉçÉbÉNÇ™åüèoÇ≥ÇÍÇÈÇΔÅAÉfÉbÉhÉçÉbÉNÇåxçêÇ∑ÇÈÉÜÅ[ÉUÉuÉåÅ[ÉNÇ…ÇÊÇËÅAé©ìÆìIÇ… MacsBug Ç…ì¸ÇËÇ‹Ç∑ÅBLJǵǪǧǻǡÇΩÇÁÅAÇ∑ÇÆÇ…Åumrj dlÅvÇ≈è⁄ç◊èÓïÒÇí≤Ç◊ǃÇ≠ÇæÇ≥Ç¢ÅB

ÉfÉoÉbÉOÉrÉãÉhÇÃÇŸÇ©ÇÃï÷óòÇ»ã@î\Ç…ÇÕÅAÉKÅ[ÉxÉWÉRÉåÉNÉVÉáÉìÇÃç≈íÜÇ…ÇÕÉJÅ[É\ÉãÇÃå`èÛÇ™è¨Ç≥Ç»ÉuÉãÉhÅ[ÉUÅ[Ç…Ç»ÇÈDZÇΔÇ≈Ç∑ÅBDZÇÃã@î\ǙdžÇÈÇΔÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™í∑Ç¢ä‘í‚é~Ç∑ÇÈå¥àˆÇ™ÉKÅ[ÉxÉWÉRÉåÉNÉVÉáÉìÇ»ÇÃǩǫǧǩîªífÇ≈Ç´Ç‹Ç∑ (à»â∫Ç≈èqÇ◊ÇÈ mrj tracegc ÉRÉ}ÉìÉhÇ≈LJìØólÇ≈Ç∑)ÅB

ÉNÉâÉXÉCÉìÉXÉ^ÉìÉXÇÃå¬êî (mrj extant)

åªç›ÉçÅ[ÉhÇ≥ÇÍǃǢÇÈëSÉNÉâÉXÇâpéöèáÇ≈ï\é¶ÇµÇ‹Ç∑ÅBÉNÉâÉXÇ≤ÇΔÇ…åªç›ÇÃÉCÉìÉXÉ^ÉìÉXêîÇ®ÇÊÇ—ç≈ëÂÉCÉìÉXÉ^ÉìÉXêîÇï\é¶ÇµÇ‹Ç∑ÅBDZÇÃÉRÉ}ÉìÉhÇ…êîílÉpÉâÉÅÅ[É^Çí«â¡Ç∑ÇÈÇΔÅAåªç›ÇÃÉCÉìÉXÉ^ÉìÉXêîǙǪÇÃêîà»è„ÇÃÉNÉâÉXÇÃǛǙï\é¶Ç≥ÇÍÇ‹Ç∑ÅB

ÉIÉuÉWÉFÉNÉgê∂ê¨ÇÃÉgÉåÅ[ÉX (mrj tracealloc íl)

ÅuílÅvÇ™ 1 ÇæÇΔÅAÉIÉuÉWÉFÉNÉgê∂ê¨ÉgÉåÅ[ÉXÇäJénǵNjÇ∑ÅB0 ÇæÇΔí‚é~ǵNjÇ∑ÅBÉIÉuÉWÉFÉNÉgÇ™ê∂ê¨Ç≥ÇÍÇÈÇΩÇ—Ç…ÉRÉìÉ\Å[ÉãDžǪÇÃÉIÉuÉWÉFÉNÉgÇÃÉNÉâÉXñºÇä‹Çfi 1 çsï™ÇÃèÓïÒÇ™èoóÕÇ≥ÇÍÇ‹Ç∑ÅBDZÇÍÇÕëΩó ÇÃèoóÕÇ…Ç»ÇËÇ‹Ç∑ (Ç≤Ç≠íPèÉÇΔévÇÌÇÍÇÈÉRÅ[ÉhÇ≈Ç≥ǶÇΩÇ≠Ç≥ÇÒÇà String Ç‚ StringBuffer ÉIÉuÉWÉFÉNÉgÇê∂ê¨ÇµÇ‹Ç∑)ÅBǵǩǵÉIÉuÉWÉFÉNÉgÇÃégópÇ…ä÷Ç∑ÇÈÉRÅ[ÉhÇÃå¯ó¶Çë™ÇÈÇ…ÇÕÇΩÇ¢Ç÷ÇÒï÷óòÇ»ï˚ñ@Ç≈Ç∑ÅB

ÉKÅ[ÉxÉWÉRÉåÉNÉVÉáÉìÇÃÉgÉåÅ[ÉX (mrj tracegc íl)

ÅuílÅvÇ™ 1 ÇæÇΔÉKÅ[ÉxÉWÉRÉåÉNÉVÉáÉìÇÃÉgÉåÅ[ÉXÇäJénǵNjÇ∑ÅB0 ÇæÇΔí‚é~ǵNjÇ∑ÅBÉKÅ[ÉxÉWÉRÉåÉNÉVÉáÉìÇ™ãNDZÇÈÇΔǪÇÃè⁄ç◊Çï\Ç∑Ç–ÇΔÇ‹ÇΔÇ‹ÇËÇÃèÓïÒÇ™ï\é¶Ç≥ÇÍÇ‹Ç∑ÅBDZÇÃèÓïÒÇÃíÜêgÇÕÇŸÇΔÇÒÇ«ñ≥ópÇÃLJÇÃÇ≈Ç∑Ç™ÅAÉKÅ[ÉxÉWÉRÉåÉNÉVÉáÉìÇÃî≠ê∂ÇéãäoìIÇ…ímÇÈDZÇΔÇ™Ç≈Ç´ÇÈÇΔǢǧì_Ç≈óLå¯Ç≈Ç∑ÅB

ÉÅÉ\ÉbÉhÇÃÉgÉåÅ[ÉX (mrj tracem íl)

ÅuílÅvÇ™ 1 ÇæÇΔÉÅÉ\ÉbÉhÇÃÉgÉåÅ[ÉXÇäJénǵNjÇ∑ÅB0 ÇæÇΔí‚é~ǵNjÇ∑ÅBÉÅÉ\ÉbÉhÇÃåƒÇ—èoǵÇΔñflÇËÇ≈ÅAÉRÉìÉ\Å[ÉãÇ… 1 çsï™ÇÃèÓïÒÇ™èoóÕÇ≥ÇÍÇ‹Ç∑ÅBDZÇÍÇÕëÂó ÇÃèoóÕÇê∂ê¨Ç∑ÇÈÇΩÇflÅAmrj redirect ÇégǡǃÅAÉRÉìÉ\Å[ÉãÉEÉBÉìÉhÉEÇ≈ÇÕÇ»Ç≠ÅAÉtÉ@ÉCÉãÇ…èëÇ´èoÇ∑ÇÊǧDžǵǃÇ≠ÇæÇ≥Ç¢ÅBÉvÉçÉOÉâÉÄÇé~ÇflÇ∏Ç…é¿çsÇÃó¨ÇÍÇí≤Ç◊ÇÈDZÇΔÇ™Ç≈Ç´ÇÈÇÃÇ≈ÅAçÇêÖèÄÉfÉoÉbÉKÇ™óòópÇ≈ǴǻǢèÍçáǻǫDžï÷óòÇ≈Ç∑ÅB

ñΩóflÉgÉåÅ[ÉX (mrj trace íl)

ÅuílÅvÇ™ 1 ÇæÇΔñΩóflÉgÉåÅ[ÉXÇäJénǵNjÇ∑ÅB0 ÇæÇΔí‚é~ǵNjÇ∑ÅBJava ÉoÉCÉgÉRÅ[ÉhñΩóflÇ™é¿çsÇ≥ÇÍÇÈÇΩÇ—Ç… 1 çsï™ÇÃèÓïÒÇ™ÉRÉìÉ\Å[ÉãÇ…èoóÕÇ≥ÇÍÇ‹Ç∑ÅBDZÇÍÇ™óLå¯Ç»èÍçáÇÕÇŸÇΔÇÒǫdžÇËÇ‹ÇπÇÒÅBîúëÂÇ»ó ÇÃèÓïÒÇ™ê∂ê¨Ç≥ÇÍÇÈÇÃÇ≈ÅAÇ‹Ç∏ mrj redirect Ç≈èoóÕêÊÇÉtÉ@ÉCÉãÇ…êÿÇËë÷ǶǃÇ≠ÇæÇ≥Ç¢ÅBJIT ÉRÉìÉpÉCÉâÇ™ê∂ê¨ÇµÇΩÉRÅ[ÉhÇ™é¿çsÇ≥ÇÍÇÈèÍçáÇÕâΩLJï\é¶Ç≥ÇÍÇ‹ÇπÇÒÇÃÇ≈ÅADZÇÃÉRÉ}ÉìÉhÇégópÇ∑ÇÈèÍçáÇÕÅAÇ‹Ç∏ JIT ÇÉIÉtDžǵǃǩÇÁ MRJ ÇãNìÆÇµÇƒÇ≠ÇæÇ≥Ç¢ÅB

MRJ 2.1 Ç≈ÇÕï\é¶Ç≥ÇÍǻǢÉoÉCÉgÉRÅ[ÉhǙdžÇËÇ‹Ç∑ÅBDZÇÍÇÕéüÇÃÉäÉäÅ[ÉXÇ≈èCê≥Ç∑ÇÈó\íËÇ≈Ç∑ÅB

éQèΔÇÃÉOÉâÉt⪠(mrj graphrefs ÉnÉìÉhÉã)

mrj fr ÇÊÇËÇ∏Ç¡ÇΔè⁄ǵǢéQèΔÉgÉåÅ[ÉXÇ≈Ç∑ÅBéQèΔå≥ÇÃÉIÉuÉWÉFÉNÉg (static Ç»ïœêîǻǫ) ÇΔǪÇÍÇ™éQèΔÇ∑ÇÈÉIÉuÉWÉFÉNÉg (ǵÇΩǙǡǃÉKÅ[ÉxÉWÉRÉåÉNÉVÉáÉìÇÃëŒè€Ç…Ç»ÇÁǻǢ) ÇΔÇèáÇ…åüçıǵǃï\é¶ÇµÇ‹Ç∑ÅB

íçà”ÅF
DZÇÃÉRÉ}ÉìÉhÇÕêŸë¨Ç…çÏê¨Ç≥ÇÍÇΩÇΩÇfl (çÏé“Çà Steve Zellers ÇÕÇΔÇ…Ç©Ç≠ÉÅÉÇÉäÉäÅ[ÉNÇÇ»Ç≠Ç∑ïKóvǙdžǡÇΩÇΩÇfl)ÅAMRJ 2.1 Ç≈ÇÕç≈è¨å¿ÇÃÉeÉXÉgǵǩçsÇÌÇÍǃǢNjÇπÇÒÅBApple Applet Runner Ç≈ÇÕìÆçÏǵNjÇπÇÒÅBîÁì˜Ç»òbÇ≈Ç∑Ç™ÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÉqÅ[ÉvÇ≈ÉÅÉÇÉäÉäÅ[ÉNÇãNDZÇ∑èÍçáǙdžÇËÇ‹Ç∑ÅB

DZÇÃÉRÉ}ÉìÉhÇÕ MRJ ÇÃÉÅÉCÉìÉXÉåÉbÉhÇ™êßå‰ÇéÊìæÇ∑ÇÈÇ‹Ç≈ë“ÇøÅAèÓïÒÇèWÇflÅAåãâ Ç System.out Ç…èoóÕǵNjÇ∑ÅBà»â∫Ç…ìTå^ìIÇ»èoóÕì‡óeÇÃç≈èâÇÃïîï™Çé¶ÇµÇ‹Ç∑ÅB

mrj graphrefs $6b11f18	
          recursively searching for references to $6b11f18
          References to: $6b11f18
          instance field: $6b11aa8 java/lang/
  Thread.target(Ljava/lang/Runnable;)
          instance field: $6b126c8 com/apple/mrj/console/Console$ConsoleArea.this$0(Lcom/
  apple/mrj/console/Console;)
          instance field: $6b13628 com/apple/mrj/
  console/Console$1.this$0(Lcom/apple/mrj/console/Console;)
          java thread var ref $6b11f18 at $x (tid $68ef584, )
                  
	References to: $6b11aa8
	array element: $6b11ea8 [1]
	c thread found $6b11aa8 at $680f2fc (tid $6adda7c, ConsoleThread)
	c thread found $6b11aa8 at $680f34c (tid $6adda7c, ConsoleThread)
	c thread found $6b11aa8 at $680f370 (tid $6adda7c, ConsoleThread)
	c thread found $6b11aa8 at $680f3e8 (tid $6adda7c, ConsoleThread)
	java thread var ref $6b11aa8 at $x (tid $68ef558, )

ÉgÉåÅ[ÉXÇÕãÛçsÇ≈ãÊêÿÇÁÇÍÇ‹Ç∑ÅBäeÉgÉåÅ[ÉXÇÕÅuReferences to:ÅvÇ≈ÇÕÇ∂Ç‹ÇËÅAǪÇÃå„Ç…ÉgÉåÅ[ÉXíÜÇÃÉIÉuÉWÉFÉNÉgÇÃÉnÉìÉhÉãÅAǪÇÃÉIÉuÉWÉFÉNÉgÇ÷ÇÃëSéQèΔÇ™ë±Ç´Ç‹Ç∑ÅBǪÇÍÇ…ÇÕÅAëºÇÃÉIÉuÉWÉFÉNÉgì‡ÇÃÉCÉìÉXÉ^ÉìÉXïœêîÅAê√ìIïœêîÅAåªçsÉXÉ^ÉbÉNÉtÉåÅ[ÉÄì‡ÇÃÉçÅ[ÉJÉãïœêîǻǫǙdžÇËÇ‹Ç∑ÅB

ç≈èâÇÃÉgÉåÅ[ÉXèÓïÒÇÕÉRÉ}ÉìÉhÇ≈éwíËǵÇΩÉIÉuÉWÉFÉNÉgÇ…ä÷Ç∑ÇÈLJÇÃÇ≈Ç∑ÅBå„ë±ÇÃÉgÉåÅ[ÉXèÓïÒÇÕÅAǪÇÍà»ëOÇÃÉgÉåÅ[ÉXÇ≈å©Ç¬Ç©Ç¡ÇΩÉIÉuÉWÉFÉNÉgÇ…ä÷Ç∑ÇÈLJÇÃÇ≈Ç∑ÅBǪÇÍǺÇÍÇÃÉgÉåÅ[ÉXåãâ ÇíHÇÈDZÇΔÇ≈ÅAñ‚ëËÇÃÉIÉuÉWÉFÉNÉgǙǫDZǩÇÁéQèΔÇ≥ÇÍǃǢÇÈÇΩÇflÇ…ÉKÅ[ÉxÉWÉRÉåÉNÉVÉáÉìÇÃëŒè€Ç…Ç»ÇÁǻǢǩǙÇÌÇ©ÇËÇ‹Ç∑ÅB

DZÇÃèoóÕèÓïÒÇÕÇΩÇ¢Ç÷ÇÒì«Ç›Ç√ÇÁǢLJÇÃÇ≈ÅAÇÊÇËÇÌÇ©ÇËÇ‚Ç∑Ç≠Ç∑ÇÈÉcÅ[ÉãÇ™ïKóvÇæÇΔévǡǃǢNjÇ∑ÅBǵǩǵÇΔÇËdžǶÇ∏ÇÃÇΔDZÇÎÇÕÅAèoóÕÇÉvÉçÉOÉâÉÄÉGÉfÉBÉ^Ç…ì\ÇËïtÇØÇƒÅAåüçıã@î\ÇégǡǃÅAäYìñÇà 16 êiêîÇíTÇ∑ÇΔÇÊÇ¢Ç≈ǵÇÂǧÅB

êÊì™ÉyÅ[ÉWÇ…ñflÇÈ


ÉIÉuÉWÉFÉNÉgÇÃåüç∏

Java ÉIÉuÉWÉFÉNÉgÇ‹ÇΩÇÕîzóÒÇÃÉnÉìÉhÉãÇ™ÇÌÇ©ÇÍÇŒÅAÉIÉuÉWÉFÉNÉgÇÃÉtÉBÅ[ÉãÉhÇ‚îzóÒÇÃóvëfÇí≤Ç◊ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBÉnÉìÉhÉãÇΔÇÕ 32 ÉrÉbÉgÇÃÉIÉuÉWÉFÉNÉg ID Ç≈Ç∑ÅBÉnÉìÉhÉãÇå©Ç¬ÇØÇÈÇ…ÇÕ 3 ǬÇÃï˚ñ@ǙdžÇËÇ‹Ç∑ÅB

  1. dcmd ÉRÉ}ÉìÉhÇÃëΩÇ≠Ç≈ÉIÉuÉWÉFÉNÉgÉnÉìÉhÉãÇ™ï\é¶Ç≥ÇÍÇ‹Ç∑ÅBó·Ç¶ÇŒÅAmrj sc ÇÕÉXÉåÉbÉhÇÃÉnÉìÉhÉãÇ‚ÅAǪÇÍǺÇÍÇÃÉXÉ^ÉbÉNÉtÉåÅ[ÉÄÇÃéÛÇØéË (ǬNjÇËÅuthisÅv) ÇÃÉnÉìÉhÉãÇï\é¶ÇµÇ‹Ç∑ÅB

  2. Object.hashCode ÉÅÉ\ÉbÉhÇÕãÔçáÇÊÇ≠ÉIÉuÉWÉFÉNÉgÉnÉìÉhÉãÇâEÇ… 3 ÉrÉbÉgÉVÉtÉgǵÇΩílÇï‘ǵNjÇ∑ÅBǵÇΩǙǡǃó·Ç¶ÇŒ foo ÇÃÉnÉìÉhÉãÇÉRÉìÉ\Å[ÉãÇ…ï\é¶Ç∑ÇÈÇ…ÇÕéüÇÃÇÊǧDžǵNjÇ∑ÅB

    System.out.println(Integer.toHexString(foo.hashCode()<<3));

    écîOǻǙÇÁäYìñÇÃÉIÉuÉWÉFÉNÉgÇÃÉNÉâÉXÇ≈ hashCode Ç™ï ÇÃílÇï‘Ç∑ÇÊǧÉIÅ[ÉoÉâÉCÉhÇ≥ÇÍǃǢÇÈÇΔÉnÉìÉhÉãÇÕéÊìæÇ≈Ç´Ç‹ÇπÇÒÅBǵÇΩǙǡǃÅAString Ç‚ Point Ç…ÇÕégǶNjÇπÇÒÅBǵǩǵÅAëÂîºÇÃÉNÉâÉXÇ≈ÇÕDZÇÃÉRÅ[ÉhÇégǡǃïKóvÇ»ÉIÉuÉWÉFÉNÉgÇÃÉnÉìÉhÉãílÇÉRÉìÉ\Å[ÉãÇ…èoóÕÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

    DZÇÃÇ”ÇÈNjǢÇÕ JVM ÇÃâ¸î≈Ç≈ïœçXÇ≥ÇÍÇÈâ¬î\ê´Ç™Ç†ÇËÇ‹Ç∑ÅB

ÉIÉuÉWÉFÉNÉgÇÃï\é¶ (mrj do ÉnÉìÉhÉã)

éwíËÇÃÉnÉìÉhÉãÇéùǬÉIÉuÉWÉFÉNÉgÇï\é¶ÇµÇ‹Ç∑ÅBåãâ ÇÕéüÇÃÇÊǧDžǻÇËÇ‹Ç∑ÅB

 java.lang.ThreadGroup@5D590C0/5D0A668
      SuperName: java/lang/Object
      # ClassName: java/lang/ThreadGroup
          parent.(Ljava/lang/ThreadGroup;) = $05d540a0
          name.(Ljava/lang/String;) = $05d590d0
          maxPriority.(I) = 10
          destroyed.(Z) = false
          daemon.(Z) = false
          vmAllowSuspension.(Z) = false
          nthreads.(I) = 3
          threads.([Ljava/lang/Thread;) = $05d59090
          ngroups.(I) = 1
          groups.([Ljava/lang/ThreadGroup;) = $05d5a948
      # ClassName: java/lang/Object

ç≈èâÇÃçsÇ…ÇÕÉIÉuÉWÉFÉNÉgÇÃÉNÉâÉXñºÇΔÉnÉìÉhÉãÇ™é¶Ç≥ÇÍÇ‹Ç∑ÅB(Åu/ÅvÇ…ë±Ç≠ 2 î‘ÇflÇÃêîílÇÕñÇ…óßǬLJÇÃÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅB) 2 î‘ÇflÇÃçsÇ…ÇÕÉXÅ[ÉpÅ[ÉNÉâÉXÇÃñºëOÇ™é¶Ç≥ÇÍÇ‹Ç∑ÅB

ǪÇÃå„Ç…ÇÕÅAÉIÉuÉWÉFÉNÉgÇÃÉNÉâÉXÇΔǪÇÍǺÇÍÇÃÉXÅ[ÉpÅ[ÉNÉâÉXÇÃèÓïÒÇ™ë±Ç´Ç‹Ç∑ÅBäeÉuÉçÉbÉNÇÕÉNÉâÉXñºÇ≈énÇ‹ÇËÅAǪÇÃÉNÉâÉXÇ≈êÈåæÇ≥ÇÍǃǢÇÈëSïœêîÇΔÅAǪÇÃÉIÉuÉWÉFÉNÉgÇ…Ç®ÇØÇÈïœêîÇÃílÇ™ï\é¶Ç≥ÇÍÇ‹Ç∑ÅB(ê√ìIïœêîÇÃèÍçáç≈å„Ç…Åu[static]ÅvÇ™ïtÇ´Ç‹Ç∑ÅB)

äeçsÇÃïœêîèÓïÒÇ…ÇÕÅAïœêîñºÇ…ë±ÇØÇƒäáå ÇÃíÜÇ…å^Ç™ï\é¶Ç≥ÇÍÇ‹Ç∑ÅBå^ÇÃï\ãLÇÕ JVM ÇÃí èÌÇÃÉGÉìÉRÅ[Éhå`éÆÇópǢNjÇ∑ÅBǬNjÇËäÓñ{å^ÇÕǪÇÍÇï\Ç∑ 1 ï∂éö (êÆêî int Çà IÅAò_óùå^ boolean Çà Z ǻǫ)ÅAÉIÉuÉWÉFÉNÉgÇÃèÍçáÇÕÅuLÅvÇÃå„ÇÎÇ…ÉNÉâÉXñºÇïtÇØÅu;ÅvÇ≈èIÇÌÇËÇ‹Ç∑ÅB

ïœêîå^ÇÕÉIÉuÉWÉFÉNÉgÇÃèÍçáÅAï\é¶Ç≥ÇÍÇÈílÇÕǪÇÃÉnÉìÉhÉãÇ≈Ç∑ÅBǪÇÃÉIÉuÉWÉFÉNÉgLJí≤Ç◊ÇΩÇØÇÍÇŒÅAÇ≥ÇÁÇ… mrj do ÉRÉ}ÉìÉhÇégópǵǃÇ≠ÇæÇ≥Ç¢ÅB

îzóÒÇÃï\é¶ (mrj do ÉnÉìÉhÉã)

éwíËÇ≥ÇÍÇΩÉnÉìÉhÉãÇéùǬîzóÒÇÃì‡óeÇï\é¶ÇµÇ‹Ç∑ÅBç≈èâÇÃçsÇÕîzóÒóvëfÇÃå^ÇΔí∑Ç≥Çé¶ÇµÇ‹Ç∑ÅBǪÇÍÇ…ë±ÇØÇƒäeóvëfÇÃèÓïÒǙǪÇÍǺÇÍ 1 çsÇ∏Ǭï\é¶Ç≥ÇÍÇ‹Ç∑ÅB

îzóÒÇÃàÍïîï™ÇæÇØÇï\é¶Ç∑ÇÈÇ…ÇÕÇ≥ÇÁÇ… 2 Ǭó]ï™Ç»ÉpÉâÉÅÅ[É^ÇéwíËǵNjÇ∑ÅBï\é¶ÇµÇΩÇ¢ç≈èâÇÃóvëfÇÃÉCÉìÉfÉbÉNÉXÇΔÅAï\é¶ÇµÇΩÇ¢ç≈å„ÇÃóvëfÇÃéüÇÃÉCÉìÉfÉbÉNÉXÇ≈Ç∑ÅB

ï∂éöóÒÇÃï\é¶ (mrj ds ÉnÉìÉhÉã)

String ÉIÉuÉWÉFÉNÉgÇÃì‡óeÇï\é¶Ç∑ÇÈä»ï÷Ç»ï˚ñ@Ç≈Ç∑ÅB(do Ç‚ da ÉRÉ}ÉìÉhÇ≈ char[] å^ÇÃîzóÒÇΔǵǃï\é¶Ç∑ÇÈDZÇΔLJÇ≈Ç´Ç‹Ç∑Ç™ÅAñ ì|Ç≈Ç∑ÅB)

DZÇÃÉRÉ}ÉìÉhÇÕ ASCII à»äOÇÃï∂éöÇ≈ÇÕñÇ…óßÇøÇ‹ÇπÇÒÅBDZÇÍÇé¿åªÇ∑ÇÈÇ…ÇÕ MacsBug Ç…ÇÕä‹Ç‹ÇÍǃǢǻǢçÇìxÇ»ïœä∑ÉTÅ[ÉrÉXÇ™ïKóvÇΔÇ»ÇÈÇΩÇflÇ≈Ç∑ÅB

ÉNÉâÉXÇÃåüçı (mrj fc ñºëO)

éwíËÇ≥ÇÍÇΩñºëOÇÃÉçÅ[ÉhçœÇ›ÇÃÉNÉâÉXÇíTǵNjÇ∑ÅBÉpÉbÉPÅ[ÉWñºÇä‹ÇfiäÆëSÇ»ÉNÉâÉXñºÇéwíËǵǃÇ≠ÇæÇ≥Ç¢ÅBÉpÉbÉPÅ[ÉWñºÇÕÅu.ÅvÇ≈ÇÕÇ»Ç≠Åu/ÅvÇ≈ãÊêÿǡǃÇ≠ÇæÇ≥Ç¢ÅBóéjìIÇ»éñèÓÇ©ÇÁì‡ïîÇ≈ÇÕÉNÉâÉXñºÇÅu/ÅvÇ≈ãÊêÿÇËÇ‹Ç∑ÅB

DZÇÃÉRÉ}ÉìÉhÇÕÉNÉâÉXÇå©Ç¬ÇØÇÈÇΔÅAäYìñÇà Class ÉIÉuÉWÉFÉNÉgÇÃÉnÉìÉhÉãÇï‘ǵNjÇ∑ÅBDZÇÃÉIÉuÉWÉFÉNÉgÇÃèÓïÒÇÕǪÇÍÇŸÇ«ñÇ…óßǬLJÇÃÇ≈ÇÕdžÇËÇ‹ÇπÇÒÇ™ÅAì¡íËÇÃÉNÉâÉXÇ™ÉçÅ[ÉhçœÇ›Ç©Ç«Ç§Ç©Çí≤Ç◊ÇÈÇ…ÇÕï÷óòÇ≈Ç∑ÅB

ÉNÉâÉXÉÅÉ\ÉbÉhÇÃï\é¶ (mrj dcm ÉNÉâÉXñº)

éwíËÇ≥ÇÍÇΩÉNÉâÉXÇÃëSÉÅÉ\ÉbÉhÇï\é¶ÇµÇ‹Ç∑ (åpè≥Ç≥ÇÍÇΩÉÅÉ\ÉbÉhLJä‹Ç›Ç‹Ç∑)ÅBÉNÉâÉXñºÇÕÅAmrj fc Ç≈èqÇ◊ÇΩÇÊǧDžÅu/ÅvÇégǧäÆëSÇ»ñºëOÇéwíËǵǃÇ≠ÇæÇ≥Ç¢ÅBèoóÕå`éÆÇÕ mrj do ÇΔìØólÇ≈Ç∑ÅB

ï\é¶Ç≥ÇÍÇÈèÓïÒÇÕäYìñÇÃÉNÉâÉXÇΔǪÇÃÉXÅ[ÉpÅ[ÉNÉâÉX (åQ) Ç…ï™Ç©ÇÍÇ‹Ç∑ÅBäeïîï™Ç…ÇÕÉNÉâÉXñºÅAǪÇÃÉNÉâÉXÇ≈ì±ì¸Ç≥ÇÍÇΩäeÉÅÉ\ÉbÉhÇ™ä‹Ç‹ÇÍÇ‹Ç∑ÅBäeÉÅÉ\ÉbÉhÇÕǪÇÍǺÇÍ 1 çsÇ∏ǬéüÇÃèÓïÒÇ™é¶Ç≥ÇÍÇ‹Ç∑ÅB

  1. ÉÅÉ\ÉbÉhñº

  2. ÉÅÉ\ÉbÉhÇÃÉVÉOÉlÉ`ÉÉÅBäeÉpÉâÉÅÅ[É^å^Çäáå ÇÃíÜÇ…èëÇ´ÅAǪÇÍÇ…ë±ÇØÇƒï‘ÇËílÇÃå^ÇèëÇ´Ç‹Ç∑ÅBå^ÇÃï\ãLÇÕ JVM ÇÃí èÌÇÃÉGÉìÉRÅ[Éhå`éÆÇópǢNjÇ∑ÅBǬNjÇËäÓñ{å^ÇÕǪÇÍÇï\Ç∑ 1 ï∂éö (êÆêî int Çà IÅAò_óùå^ boolean Çà Z ǻǫ)ÅAÉIÉuÉWÉFÉNÉgÇÃèÍçáÇÕÅuLÅvÇÃå„ÇÎÇ…ÉNÉâÉXñºÇïtÇØÅu;ÅvÇ≈èIÇÌÇËÇ‹Ç∑ÅB

  3. ê√ìIïœêîÇï\Ç∑ static Ç‚ìØä˙ÇéwíËÇ∑ÇÈ synchronized ǻǫÇÃèCè¸éqÅB

ÉIÉuÉWÉFÉNÉgÉÅÉ\ÉbÉhÇÃï\é¶ (mrj dom ÉnÉìÉhÉã)

mrj dcm ÇΔìØólÇ≈Ç∑Ç™ÅAéwíËÇ≥ÇÍÇΩÉnÉìÉhÉãÇéùǬÉIÉuÉWÉFÉNÉgÇÃÉNÉâÉXÇÃÉÅÉ\ÉbÉhÇï\é¶ÇµÇ‹Ç∑ÅB

êÊì™ÉyÅ[ÉWÇ…ñflÇÈ


ÉXÉ^ÉbÉNÉNÉçÅ[ÉãÇΔÉXÉåÉbÉhï\é¶ÇÃâéfl

mrj sc ÉRÉ}ÉìÉhÇΔ mrj threads ÉRÉ}ÉìÉhÇÕÇ¢Ç∏ÇÍLJÉXÉ^ÉbÉNÉNÉçÅ[ÉãÇï\é¶ÇµÇ‹Ç∑ÅBǪDZDžÇÕÅAÇÌÇ©ÇËÇ…Ç≠Ç¢Ç≈Ç∑Ç™ÅAóLâvÇ»èÓïÒÇ™ãlÇflçûÇ‹ÇÍǃǢNjÇ∑ÅBìTå^ìIÇ»ÉXÉ^ÉbÉNÉNÉçÅ[ÉãÇÃó·Çé¶ÇµÇ‹Ç∑ÅB

  "QDPipeline"
      TID: $60a1bf8, prio: 5
      sys_thread: $5fe3200, priority: 5, saved_sp: $5fc5980
      state: WCV, mon: $727ec24, cq: $727ec30
   $60a1c20 -> java.lang.Object.wait(Object.java:315)
   $60a1c20 -> com.apple.mrj.internal.awt.QDPipeline.run(QDPipeline.java:289)
   $60a1bf8 -> java.lang.Thread.run(Thread.java:474)

ÉXÉåÉbÉhÉwÉbÉ_

ç≈èâÇà 4 çsÇÕÉXÉåÉbÉhÇ…ä÷Ç∑ÇÈèÓïÒÇï\é¶ÇµÇ‹Ç∑ÅB

1 çsñ⁄ÇÃà¯ópïÑÇ…àÕÇ‹ÇÍÇΩÉXÉåÉbÉhñºÅFÉXÉåÉbÉhÇÃÉRÉìÉXÉgÉâÉNÉ^Ç…ìnÇ≥ÇÍÇΩ String å^ÇÃÉpÉâÉÅÅ[É^Ç≈Ç∑ÅBéwíËǵǻǩǡÇΩèÍçáÇÕÅuThread-7ÅvÇÃÇÊǧǻÉfÉtÉHÉãÉgÇÃñºëOÇ…Ç»ÇËÇ‹Ç∑ÅBÉXÉåÉbÉhÇ…à”ñ°ÇÃdžÇÈñºëOÇïtÇØÇÈÇΔÉfÉoÉbÉOǙǵǂÇ∑Ç≠Ç»ÇËÇ‹Ç∑ÅB

TID: ÉXÉåÉbÉhÉIÉuÉWÉFÉNÉgÇÃÉnÉìÉhÉãÇ≈Ç∑ÅBDZÇÍÇÕ mrj do ǻǫÇÃÉIÉuÉWÉFÉNÉgåüç∏ÉRÉ}ÉìÉhÇ≈égǧDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

prio: í èÌÇà Java ÉXÉåÉbÉhÇÃóDêÊèáà Ç≈ÅA1Å`10 ÇÃîÕàÕÇ…Ç»ÇËÇ‹Ç∑ÅBé¿ç€Ç…í≤Ç◊ǃǛÇÈÇΔÅuÉÅÉCÉìÅvÇÃÉXÉåÉbÉhÇÃóDêÊèáà Ç™ 11 DžǻǡǃǢÇÈDZÇΔÇ…ì«é“ÇÕÅAãCÇ√Ç©ÇÍÇÈǩLJǵÇÍÇ‹ÇπÇÒÅBÉvÉçÉOÉâÉÄë§Ç≈DZÇÃÇÊǧDžê›íËÇ∑ÇÈDZÇΔÇÕïsâ¬î\Ç≈Ç∑ÅBJVM Ç™ÇÌÇ¥ÇΔǪÇÃÇÊǧDžê›íËÇ∑ÇÈÇÃÇ≈Ç∑ÅBDZǧÇ∑ÇÈóùóRÇÕÅAÉÅÉCÉìÉXÉåÉbÉhÇÕ JManager åƒÇ—èoǵÇÃç€ÇŸÇ©ÇÃdžÇÁljÇÈÉXÉåÉbÉhÇ…äÑÇËçûÇfiïKóvǙdžÇÈÇΩÇflÇ≈Ç∑ÅB

sys_thread: ÉlÉCÉeÉBÉu (â∫à ÉVÉXÉeÉÄÇÃ) ÉXÉåÉbÉhÇÃç\ë¢ëÃÇéwǵNjÇ∑ÅBÉlÉCÉeÉBÉuÉXÉåÉbÉhÇÃèÓïÒÇÕ mrj thd ÉRÉ}ÉìÉhÇ≈ï\é¶Ç≈Ç´Ç‹Ç∑ÅBÇÌÇ©ÇËÇ…Ç≠Ç¢Ç≈Ç∑Ç™ëÂó ÇÃèÓïÒÇ™ï\é¶Ç≥ÇÍÇ‹Ç∑ÅB

saved_sp: džÇÈÇ¢ÇÕ *current thread*: å©èoǵǙÅusaved_spÅvÇÃèÍçáÇÕÅAÉXÉåÉbÉhÇÃÉlÉCÉeÉBÉuÉXÉ^ÉbÉNÇéwǵNjÇ∑ÅBDZÇÍÇÕ MacsBug ÇÃí èÌÇÃÉXÉ^ÉbÉNÉNÉçÅ[ÉãÉRÉ}ÉìÉh sc7 Ç…ÇÊÇÈÉXÉ^ÉbÉNï\é¶Ç≈égǶNjÇ∑ÅB(ǵǩǵ sc7 Ç…ÇÊÇÈÉXÉ^ÉbÉNÉNÉçÅ[Éãï\é¶ÇÕdžNjÇËê≥ämÇ≈ÇÕÇ»Ç≠ÅAëÂó ÇÃÉSÉ~Ç™ï\é¶Ç≥ÇÍÇÈèÍçáǙdžÇËÇ‹Ç∑ÅB) å©èoǵǙÅu*current thread*ÅvÇÃèÍçáÇÕÅADZÇÃÉXÉåÉbÉhÇÕåªç›é¿çsíÜÇ≈džÇÈDZÇΔÇà”ñ°ÇµÇ‹Ç∑ÅBsc Ç‚ sc7 ÉRÉ}ÉìÉhÇà¯êîǻǵÇ≈é¿çsÇ∑ÇÍnjǪÇÃÉlÉCÉeÉBÉuÉXÉ^ÉbÉNÇ™ï\é¶Ç≥ÇÍÇ‹Ç∑ÅB

priority: óéjìIÇ»éñèÓǙdžǡǃÅAëOçsÇÃÅuprioÅvÇΔǢǧå©èoǵÇÃèÓïÒÇΔÇæÇ‘Ç¡ÇƒÇ¢Ç‹Ç∑ÅB

state: ÉXÉåÉbÉhÇÃåªç›ÇÃèÛë‘Ç≈Ç∑ÅB
ÅERDY (ready): ÉXÉåÉbÉhÇ™é¿çsâ¬î\Ç≈džÇÈDZÇΔÇï\ǵNjÇ∑ÅBǬNjÇËåªç›Ç∑Ç≈Ç…é¿çsíÜÇ©ÅAÉXÉPÉWÉÖÅ[ÉâÇ™ëIëÇ∑ÇÍÇŒë¶é¿çsèÛë‘Ç…Ç»ÇÍÇÈÇ©ÅAÇ¢Ç∏ÇÍÇ©ÇÃèÛë‘Ç≈Ç∑ÅB(å„é“ÇÃèÛë‘Ç≈džǡǃLJÅADZÇÍÇÊÇËóDêÊèáà ÇÃçÇÇ¢ÉXÉåÉbÉhÇ™èÌÇ…ÉrÉWÅ[èÛë‘Ç≈džÇÍÇŒé¿çsÇÃÉ`ÉÉÉìÉXÇÕdžÇËÇ‹ÇπÇÒÅB)
ÅEWMON (waiting on monitor): ÇΩǢǃǢÇÃèÍçáÅAìØä˙ (synchronized) ÇÃéwíËÇÃdžÇÈÉÅÉ\ÉbÉhÇ‹ÇΩÇÕé¿çsï∂Ç…Ç‹Ç≥Ç…ì¸ÇÎǧÇΔÇ∑ÇÈÉXÉåÉbÉhÇ™ÅAǪÇÃÉIÉuÉWÉFÉNÉgÇΔÇ∑Ç≈Ç…ìØä˙íÜÇÃÉXÉåÉbÉhǙǟǩDždžÇÈÇΩÇflÅAë“ÇøÇÃÉuÉçÉbÉNÇ…ì¸Ç¡ÇƒÇ¢ÇÈDZÇΔÇï\ǵNjÇ∑ÅB(dcmd ÇÃÉoÉOÇÃÇΩÇflÅAé¿çsâ¬î\Ç»ÉXÉåÉbÉhÇ»ÇÃÇ…ÇΔÇ´ÇΩÇ‹ä‘à·Ç¶ÇÁÇÍǃ WMON ÇΔÇ≥ÇÍÇÈèÍçáǙdžÇËÇ‹Ç∑ÅB)
ÅEWCV (waiting on condition variable): ÉXÉåÉbÉhÇÕ Object.wait ÉÅÉ\ÉbÉhÇ≈ÉuÉçÉbÉNǵǃǮÇËÅAObject.notify Ç‹ÇΩÇÕ notifyAll Ç…ÇÊÇÈçƒäJÇë“ǡǃǢÇÈèÛë‘Ç≈Ç∑ÅB
ÅESUSP (suspended): ÉXÉåÉbÉhÇÕ Thread.suspend Ç≈é¿çsÇï€óØÇ≥ÇÍǃǢÇÈèÛë‘Ç≈Ç∑ÅB

mon:DZÇÃÉtÉBÅ[ÉãÉhÇÕÅAÉXÉåÉbÉhèÛë‘Ç™ WMON ÇÃèÍçáÅAǪÇÃÉXÉåÉbÉhÇ™ÉuÉçÉbÉNǵǃǢÇÈÉÇÉjÉ^Çà ID Çé¶ÇµÇ‹Ç∑ÅBÉÇÉjÉ^ÇÕí èÌâΩÇÁÇ©ÇÃÉIÉuÉWÉFÉNÉgÇΔëŒâûïtÇØÇÁÇÍǃǢNjÇ∑Ç™ÅAÉÇÉjÉ^ ID ǪÇÃLJÇÃÇÕÉIÉuÉWÉFÉNÉgÉnÉìÉhÉãÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅBÇ‹ÇΩÅAÇ«ÇÃÉIÉuÉWÉFÉNÉgDžLJëŒâûǵǻǢÉÇÉjÉ^LJë∂ç›ÇµÇ‹Ç∑ÅBmrj fm ÉRÉ}ÉìÉhÇégǧÇΔǪÇÃÉÇÉjÉ^ÇÃèäóLé“Ç≈džÇÈ Java ÉIÉuÉWÉFÉNÉgÇ™ÇÌÇ©ÇËÇ‹Ç∑ÅBÇ‹ÇΩÅAmrj mon ÉRÉ}ÉìÉhÇ≈ÉÇÉjÉ^é©ëÃÇÃèÓïÒ (ÇÌÇ©ÇËÇ…Ç≠Ç¢Ç≈Ç∑) Çï\é¶Ç≈Ç´ÇÈèÍçáǙdžÇËÇ‹Ç∑ÅB

cq: DZÇÃÉtÉBÅ[ÉãÉhÇÕÅAÉXÉåÉbÉhèÛë‘Ç™ WCV ÇÃèÍçáÅAǪÇÃÉXÉåÉbÉhÇ™ë“ÇøèÛë‘Ç…íuÇ©ÇÍǃǢÇÈÉRÉìÉfÉBÉbÉVÉáÉìÉLÉÖÅ[Çà ID Çï\ǵNjÇ∑ÅBDZÇÍÇÕì‡ïîÉfÅ[É^ç\ë¢ÇÃÇ–ÇΔǬÇ≈ÅAǪDZDžÇÕÉvÉçÉOÉâÉ}Ç™ä÷ímÇ∑ÇÈÇÊǧǻïîï™ÇÕdžÇËÇ‹ÇπÇÒÅB

ÉXÉ^ÉbÉNÉNÉçÅ[ÉãǪÇÃLJÇÃ

ÉXÉåÉbÉhÉwÉbÉ_ÇÃå„Ç…ÇÕ Java ÉXÉ^ÉbÉNÉNÉçÅ[ÉãÇ™ë±Ç´Ç‹Ç∑ÅBDZÇÍÇÕÇΩǢǃǢÇÃèÍçáÅAó·äOÇ™ãNDZǡÇΩÇΔÇ´Ç…ÉRÉìÉ\Å[ÉãÇ…ï\é¶Ç≥ÇÍÇÈÉXÉ^ÉbÉNÉNÉçÅ[ÉãÇΔìØàÍÇÃLJÇÃÇ≈Ç∑ÅB

ÉXÉ^ÉbÉNÉtÉåÅ[ÉÄÇÕêVǵǢèáÇ…ï\é¶Ç≥ÇÍÇ‹Ç∑ÅBǬNjÇËåªç›ÇÃÉXÉåÉbÉhÇ™àÍî‘è„Ç…óàÇ‹Ç∑ÅB

äeçsÇÃç≈èâÇ…ÇÕ 16 êiêîÇ™ï\é¶Ç≥ÇÍÇ‹Ç∑ÅBDZÇÍÇÕÉÅÉ\ÉbÉhÇÃÅuthisÅvïœêî (éÛÇØéË) ÇÃÉIÉuÉWÉFÉNÉgÉnÉìÉhÉãÇ≈Ç∑ÅBDZÇÍÇÕ mrj do ǻǫÇÃÉIÉuÉWÉFÉNÉgåüç∏ÉRÉ}ÉìÉhÇ≈égópÇ≈Ç´Ç‹Ç∑ÅB

ÉIÉuÉWÉFÉNÉgÉnÉìÉhÉãÇ…ë±Ç¢ÇƒÉÅÉ\ÉbÉhÇÃñºëOÇ™óàÇ‹Ç∑ÅBǪÇÍÇ…ë±Ç¢Çƒäáå ÇÃíÜÇ…ÅAÉ\Å[ÉXÉtÉ@ÉCÉãÇÃñºëOÇΔî≠ê∂â”èäÇÃçsî‘çÜÇ™ì¸ÇËÇ‹Ç∑ÅB

íçà”ÅF
ÉNÉâÉXÉtÉ@ÉCÉãÇ…çsî‘çÜÇÃëŒâûï\Ç™ä‹Ç‹ÇÍǃǢǻǢèÍçáÅAÉ\Å[ÉXÉtÉ@ÉCÉãñºÇΔçsî‘çÜÇÕï\é¶Ç≥ÇÍÇ‹ÇπÇÒÅB(Metrowerks CodeWarrior Ç≈ÉRÅ[ÉhÇÉRÉìÉpÉCÉãǵÇΩèÍçáÅAÉvÉçÉWÉFÉNÉgÉEÉBÉìÉhÉEÇÃÉ\Å[ÉXÉtÉ@ÉCÉãÇÃÇΔÇ»ÇËDždžÇÈÉfÉoÉbÉOÇÃàÛÇÉIÉìDžǵǃÇ≠ÇæÇ≥Ç¢ÅB)

É\Å[ÉXÉtÉ@ÉCÉãÇΔçsî‘çÜÇÃèÓïÒÇ™éÊìæÇ≈ǴǻǢÇΔÇ´ÅAǪÇÃïîï™ÇÕÅu(Compiled Code)ÅvÇΔï\é¶Ç≥ÇÍÇ‹Ç∑ÅBçsî‘çÜëŒâûï\ǙǻǢèÍçáÇÃÇŸÇ©ÅAJIT ÉRÉìÉpÉCÉâÇ…ÇÊÇËÉÅÉ\ÉbÉhÇ™ÉlÉCÉeÉBÉuÉRÅ[ÉhÇ…ÉRÉìÉpÉCÉãÇ≥ÇÍÇΩèÍçáLJìØólÇ≈Ç∑ÅBJIT Ç™ê∂ê¨ÇµÇΩÉlÉCÉeÉBÉuÇ»ñΩóflÇ Java ÉoÉCÉgÉRÅ[ÉhÇ…ñflÇ∑DZÇΔÇÕïsâ¬î\Ç©ÅAîÒèÌÇ…ÇfiÇ∏ǩǵǢÇÃÇ≈Ç∑ÅBçsî‘çÜÇï\é¶ÇµÇΩÇØÇÍÇŒ JIT ÇÉIÉtDžǵǃÇ≠ÇæÇ≥Ç¢ÅBǪÇÍÇ…ÇÕÅAÅuMRJ LibrariesÅvÉtÉHÉãÉ_Ç©ÇÁÅuMRJ PPC JITCÅvÇçÌèúǵǃÇ≠ÇæÇ≥Ç¢ÅB

ÉÇÉjÉ^ÉLÉÉÉbÉVÉÖÇÃï\é¶

ÉÇÉjÉ^ÇΔÇÕÉIÉuÉWÉFÉNÉgìØä˙Çé¿åªÇ∑ÇÈäÓñ{ã@ç\Ç≈Ç∑ÅBÉÇÉjÉ^ÇÕÉIÉuÉWÉFÉNÉgÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅBÉXÉåÉbÉhÇ™âΩÇÁÇ©ÇÃÉIÉuÉWÉFÉNÉgÇΔìØä˙ÇéÊÇÎǧÇΔÇ∑ÇÈÇΔÅAǪÇÃÉIÉuÉWÉFÉNÉgÇ…ÉÇÉjÉ^Ç™äÑÇËìñǃÇÁÇÍÇ‹Ç∑ÅB(âΩÇÃÉIÉuÉWÉFÉNÉgDžLJëŒâûǵǻǢì‡ïîégópÇÃÉÇÉjÉ^LJdžÇËÇ‹Ç∑ÅB)

è„ãLÇ≈èqÇ◊ÇΩÇÊǧDžÅAÉXÉ^ÉbÉNÉNÉçÅ[Éãï\é¶ÇÃÉwÉbÉ_Ç…ÇÕÅAǪÇÃÉXÉåÉbÉhÇ™ÉÇÉjÉ^Ç≈ÉuÉçÉbÉNǵǃǢÇÈǩǫǧǩÅALJǵǪǧǻÇÁǪÇÃÉÇÉjÉ^Çï\é¶ÇµÇ‹Ç∑ÅBǮǪÇÁÇ≠ì«é“Ç™éüÇ…ímÇËÇΩǢDZÇΔÇÕÅAǪÇÃÉÇÉjÉ^Ç…ëŒâûÇ∑ÇÈÉIÉuÉWÉFÉNÉgÇÕâΩÇ©ÇΔǢǧDZÇΔÇ≈ǵÇÂǧÅBÇΩǢǃǢÇÃèÍçáDZÇÍÇÕ (ǢǬLJÇΔÇÕǩǨÇËÇ‹ÇπÇÒÇ™)Åumrj threadsÅvï\é¶ÇÃÉÇÉjÉ^ÉLÉÉÉbÉVÉÖï\é¶ÇÃïîï™Çå©ÇÍÇŒÇÌÇ©ÇËÇ‹Ç∑ÅBDZÇÍÇÕç≈å„ÇÃÉXÉåÉbÉhÇÃÉXÉ^ÉbÉNÉNÉçÅ[ÉãÇÃéüÇ…óàÇ‹Ç∑ÅBǪDZDžÇÕÅAç≈ãflÉÇÉjÉ^ÇälìæÇµÇΩÉIÉuÉWÉFÉNÉgÇ™óÒãìÇ≥ÇÍǃǢNjÇ∑ÅBìTå^ìIÇ»ï\é¶Çé¶ÇµÇ‹Ç∑ÅB

    "com.apple.mrj.JManager.AVDispatcherThread@60A09C8/618AD48"
       <unowned>
      Waiting to be notified:
         "AVGrp-com.apple.mrj.JManager.JMAWTContextImpl@c6ce6f-Disp" prio 4

ç≈èâÇÃçsÇÕÉIÉuÉWÉFÉNÉgÇÃÉNÉâÉXÇ≈Ç∑ÅBÅu@ÅvÇΔÅu/ÅvÇ…ã≤Ç‹ÇÍÇΩ 16 êiêîÇÕÉIÉuÉWÉFÉNÉgÉnÉìÉhÉãÇ≈Ç∑ÅBDZÇÍÇégǶnj mrj do ǻǫÇÃÉRÉ}ÉìÉhÇ≈ÉIÉuÉWÉFÉNÉgÇåüç∏Ç∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

2 çsÇflÇÕǪÇÃÉÇÉjÉ^ÇèäóL (åªç›ï€éùǵǃǢÇÈ) ÉXÉåÉbÉhÇé¶ÇµÇ‹Ç∑ÅBèäóLé“ǙǻǢèÍçáÇÕÅu<unowned>ÅvÇΔï\é¶Ç≥ÇÍÇ‹Ç∑ÅB

ǪÇÃÉÇÉjÉ^Ç≈ÉuÉçÉbÉNǵǃǢÇÈÉXÉåÉbÉhÇ™ 1 ǬNjÇΩÇÕï°êîdžÇÈèÍçáÅuWaiting to be notified:ÅvÇ…ë±Ç≠çsÇ…ï\é¶Ç≥ÇÍÇ‹Ç∑ÅBǪÇÍǺÇÍÅAñºëOÅAǪÇÍÇ…ë±ÇØÇƒÅu@ÅvÅAÉXÉåÉbÉhÉIÉuÉWÉFÉNÉgÇÃÉnÉìÉhÉãÅAóDêÊèáà Ç™ï\é¶Ç≥ÇÍÇ‹Ç∑ÅBè„Ç≈é¶ÇµÇΩÇÊǧDžäeÉXÉåÉbÉhÇÃè⁄ç◊ÇÕǪÇÍǺÇÍÇÃÉXÉ^ÉbÉNÉNÉçÅ[ÉãÇ≈å©ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

ìØä˙Ç…ä÷òAǵǃãNDZÇÈñ‚ëËÇ≈ÇÊÇ≠èoǃÇ≠ÇÈ Java ÉIÉuÉWÉFÉNÉgÇ™ 2 ǬdžÇËÇ‹Ç∑ÇÃÇ≈ÅAǪÇÍDžǬǢǃê‡ñæÇµÇ‹ÇµÇÂǧÅBcom.apple.mrj.macos.toolbox.Toolbox ÇÕÅAÉcÅ[ÉãÉ{ÉbÉNÉXÇÃÉçÉbÉNÇ≈ÅAAWT ÉsÉAǻǫÇÃÉlÉCÉeÉBÉuÉRÅ[ÉhdžÇÈÇ¢ÇÕ JDirect ÉRÅ[ÉhÇ™ Mac ÉcÅ[ÉãÉ{ÉbÉNÉXÇΔìØä˙ÇéÊÇÈÇÃÇ…égópǵNjÇ∑ (ÅuTechnote 1153ÅFMRJ Ç©ÇÁï°êîÉXÉåÉbÉhÇ≈à¿ëSÇ…ÉcÅ[ÉãÉ{ÉbÉNÉXÇóòópÇ∑ÇÈï˚ñ@ÅvéQèΔ)ÅBÉÇÉjÉ^ÉLÉÉÉbÉVÉÖÇ… java.lang.Object ǙdžÇÈèÍçáÅAǪÇÍÇÕǮǪÇÁÇ≠ public Ç» AWT ÉNÉâÉXÇ™égópÇ∑ÇÈ treeLock (java.awt.Component Ç≈êÈåæÇ≥ÇÍǃǢNjÇ∑) Ç≈ÅAÉRÉìÉ|Å[ÉlÉìÉgäKëwÇ÷ÇÃÉAÉNÉZÉXÇÃìØä˙ÇéÊÇÈÇÃÇ…égÇÌÇÍÇ‹Ç∑ÅBAWT ä÷òAÇÃÉfÉbÉhÉçÉbÉNÇÃå¥àˆÇÕëΩÇ≠ÇÃèÍçáDZÇà treeLock Ç™å¥àˆÇ≈Ç∑ÅB

ìoò^çœÇ›ÉÇÉjÉ^ÇÃï\é¶

ÉXÉåÉbÉhï\é¶ÇÃç≈å„ÇÃïîï™ÇÕìoò^çœÇ›ÉÇÉjÉ^ÇÃàÍóóÇ≈Ç∑ÅBÉÇÉjÉ^Ç…ÇÕÇ«ÇÃÉIÉuÉWÉFÉNÉgDžLJäÑÇËìñǃÇÁÇÍǃÇÕǢǻǢǙÅAJVM Ç™îFímǵǃǢÇÈLJÇÃǙdžÇËÇ‹Ç∑ÅBDZÇÍÇÁÇÃÉÇÉjÉ^ÇÕÅAJITÅAÉNÉâÉXÉçÅ[É_ÅAfinalize ÉXÉåÉbÉhǻǫǙì‡ïîÇ≈égópǵNjÇ∑ÅBí èÌì«é“ÇÕDZÇÍÇà”éØÇ∑ÇÈïKóvÇÕdžÇËÇ‹ÇπÇÒÅBǵǩǵÇ≤Ç≠Ç‹ÇÍDžDZÇÍÇÁÇÃÉÇÉjÉ^Ç…ä÷ÇÌÇÈÉfÉbÉhÉçÉbÉNÇ™ãNDZÇÈèÍçáǙdžÇËÇ‹Ç∑ (ó·Ç¶ÇŒÅAÇÌÇÍÇÌÇÍÇÕ JIT ÇΔÉNÉâÉXÉçÅ[É_ÇÃä‘Ç≈ãNDZǡÇΩÉfÉbÉhÉçÉbÉNÇ…ÇÊÇÈÉoÉOÇ≈ãÍǵÇÒÇæåoå±Ç™Ç†ÇËÇ‹Ç∑)ÅBDZÇÍÇÁÇ…óçÇfiñ‚ëËÇ™ãNDZǡÇΩèÍçáÇÕÇ‹Ç∏ä‘à·Ç¢Ç»Ç≠ MRJ ÇÃÉoÉOÇ≈Ç∑ÇÃÇ≈ÅAstdlog ÇΔ mrjlog ÇìYïtǵǃÇ∑ÇÆÇ…ÉAÉbÉvÉãÇ…ïÒçêǵǃÇ≠ÇæÇ≥Ç¢ÅB

êÊì™ÉyÅ[ÉWÇ…ñflÇÈ


ÉRÉìÉeÉLÉXÉgÇÃêÿÇËë÷Ƕ

é¿çsíÜÇà MRJ ÉCÉìÉXÉ^ÉìÉXÇ™ 1 å¬ÇæÇØÇÃèÍçáÅAmrj dcmd ÇÕé©ìÆìIDžǪÇÍÇå©Ç¬ÇØÇ‹Ç∑ÅBMacsBug Ç™ãNìÆÇ≥ÇÍÇΩèuä‘Ç…Ç«ÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™ÉAÉNÉeÉBÉuÇæÇ¡ÇΩǩǫǧǩÇÕä÷åWdžÇËÇ‹ÇπÇÒÅBǵǩǵìØéûÇ… 2 ǬÇà Java ÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™é¿çsÇ≥ÇÍǃǢÇÈèÍçáÇÕÅAì«é“é©êgǙǪÇÍÇéwíËÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB

MRJ ÇÃì¡íËÉCÉìÉXÉ^ÉìÉXÇéwíËÇ∑ÇÈÇ…ÇÕÅAǪÇà CFM ÉRÉìÉeÉLÉXÉg ID ÇímÇÈïKóvǙdžÇËÇ‹Ç∑ÅBDZÇÍÇÕ MacsBug ÇÃÅufragsÅvÉRÉ}ÉìÉhÇ≈ÇÌÇ©ÇËÇ‹Ç∑ÅBDZÇÃÉRÉ}ÉìÉhÇÃèoóÕÇÕÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃàÍóóÇé¶Ç∑LJÇÃÇ≈ÅAäeÉAÉvÉäÉPÅ[ÉVÉáÉìÇ≤ÇΔÇ…óòópíÜÇÃÉâÉCÉuÉâÉäàÍóóÇ™ï\é¶Ç≥ÇÍÇ‹Ç∑ÅBäeÉAÉvÉäÉPÅ[ÉVÉáÉìèÓïÒÇÃÉwÉbÉ_çsÇ…ÇÕǪÇÃÉRÉìÉeÉLÉXÉg ID Ç™ï\é¶Ç≥ÇÍǃǢNjÇ∑ (ID ÇÕ 10 êiï\é¶ÇÃÇΩÇflêÊì™Ç…Åu#ÅvÇ™ïtÇ´Ç‹Ç∑ÅBDZÇÃílÇÉ^ÉCÉvÇ∑ÇÈèÍçáÇÕDZÇÃ#ÇïtÇØñYÇÍǻǢÇ≈Ç≠ÇæÇ≥Ç¢)ÅB

ÉRÉìÉeÉLÉXÉgÇÃêÿÇËë÷Ƕ (mrj prf ÉRÉìÉeÉLÉXÉg)

éwíËÇÃÉRÉìÉeÉLÉXÉgÇ≈é¿çsÇ≥ÇÍǃǢÇÈ MRJ ÉCÉìÉXÉ^ÉìÉXÇëIÇ—Ç‹Ç∑ÅBï ÇÃLJÇÃÇ…êÿÇËë÷ǶǻǢǩǨÇËÅADZÇÃå„Ç…é¿çsÇ≥ÇÍÇÈÉRÉ}ÉìÉhÇÕÇ∑Ç◊ǃDZÇà MRJ ÉCÉìÉXÉ^ÉìÉXÇ…ìKópÇ≥ÇÍÇ‹Ç∑ÅB

ÉRÉìÉeÉLÉXÉgÇÃï\é¶ (mrj pr)

åªç›ëIëÇ≥ÇÍǃǢÇÈ CFM ÉRÉìÉeÉLÉXÉgǙdžÇÍnjǪÇÍÇï\é¶ÇµÇ‹Ç∑ÅB

êÊì™ÉyÅ[ÉWÇ…ñflÇÈ


éQçlï∂å£

  • ÉAÉbÉvÉãÉRÉìÉsÉÖÅ[É^ÅwMacsBug Reference And Debugging GuideÅx1995
    MacsBug ÇÃäÆëSÇ»ÉKÉCÉhÇ≈Ç∑ÅBÇÌÇ©ÇËÇ‚Ç∑Ç≠ÇÕdžÇËÇ‹ÇπÇÒÅBëÂó ÇÃÉlÉCÉeÉBÉuÉRÅ[ÉhÇÉfÉoÉbÉOÇ‚ÉeÉXÉgÇçsǧÇÃÇ≈ǻǢǩǨÇËÇÕïsóvÇ≈Ç∑ÅB
  • Lindholm, Tim íòÅwThe Java Virtual Machine SpecificationÅxAddison-Wesley, 1996
    JVM ÇÃìÆçÏå¥óùÇäÆëSÇ…é¶ÇµÇΩédólèëÇ≈Ç∑ÅBÉXÉåÉbÉhÇÃÇ”ÇÈNjǢDžǬǢǃê≥ämÇ…è⁄ç◊ÇímÇËÇΩÇ¢èÍçáÇÕDZÇÍÇì«ÇÒÇ≈Ç≠ÇæÇ≥Ç¢ÅB(ÉIÉuÉWÉFÉNÉgÇÃÉåÉCÉAÉEÉgÇ‚ÉXÉåÉbÉhÇÃÉXÉPÉWÉÖÅ[ÉäÉìÉOÇ…ä÷òAÇ∑ÇÈé¿ëïÇ≤ÇΔÇÃè⁄ç◊ÇÕèqÇ◊ÇÁÇÍǃǢNjÇπÇÒÅB)


êÊì™ÉyÅ[ÉWÇ…ñflÇÈ